join():等待线程完成
join线程:程序中有多个线程并发执行时,在某些时候,一个线程必须等待另一个(另几个)线程执行完成后,
该线程才能继续向下执行。
Thread提供了让一个线程等待另一个线程完成的方法:join() 方法。
当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join方法加入的join线程完成为止。
join()方法有3个版本:
join(): 无限等待,必须等到被join的线程执行完成。
join(毫秒数): 只等待多少毫秒,程序在指定的毫秒内必须完成该任务。
join(毫秒数, 纳秒数):等待多少毫秒、多少纳秒。
class MyRunnable implements Runnable{ public void run(){ for(int i =0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"-----"+Thread.currentThread().getPriority()+"---"+i); } } }
public class JoinTest { public static void main(String[] args)throws Exception { Runnable myRunnable = new MyRunnable(); Thread myThread = new Thread(myRunnable); Thread myThread2 = new Thread(myRunnable); //设置优先级 (注意优先级设置最好使用Thread常量来处理) /** * int MAX_PRIORITY 10 最大优先级 (将有机会获得更多的CPU时间片) int MIN_PRIORITY 1 最小优先级 int NORM_PRIORITY 5 默认优先级 (如果不设置就是默认) */ myThread2.setPriority(Thread.MAX_PRIORITY); myThread.start(); myThread2.start(); System.out.println("----------------------------"); for(int i =0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"--"+Thread.currentThread().getPriority()+"-"+i); if(i == 3){ System.out.println("------join------------"); // 谁调用join,谁就会先执行,等待join进来的线程执行完毕其他的线程才可以继续执行 myThread.join(); myThread2.join(); } } } }
join方法会更优先执行
相关推荐
是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个方法,下面谈谈自己的理解。 Thread.Join()在MSDN中的解释很模糊:Blocks the calling thread until a thread terminates 有两个主要问题: ...
在本篇文章中,我们将详细介绍Java线程Thread.join方法的解析和实现。 首先,让我们看看join方法的定义。join方法是Thread类中的一个final方法,它的作用是使当前线程等待另一个线程的结束。join方法有两个重载的...
在Java多线程编程中,理解并正确使用`yield`和`join`方法是至关重要的。这两个方法都属于线程控制策略的一部分,但它们的作用和使用场景有所不同。 首先,我们来详细探讨`Thread.yield()`方法。这个方法的目的是让...
System.Threading命名空间中的Thread类是实现多线程的基础,提供了创建、控制和管理线程的方法。本文将深入探讨C#多线程编程,包括Thread类的使用以及线程同步的相关知识。 ### 1. Thread类介绍 Thread类是C#中处理...
ThreadJoin t1 = new ThreadJoin("线程1"); ThreadJoin t2 = new ThreadJoin("线程2"); t1.start(); t1.join(); // 等待线程1结束 t2.start(); } } ``` 在上面的代码中,我们首先创建了两个线程对象t1和t2,...
在下面的示例代码中,我们创建了一个新的线程`oThread`,并使用`ThreadStart`委托传递一个方法`Back.Start`作为线程的入口点。接着,通过调用`oThread.Start()`启动线程。然而,需要注意的是,`Start()`方法的调用...
`thread_create.c`、`thread_join.c`等源代码文件提供实际的编程示例,展示了如何在C语言中创建、管理线程。通过阅读和理解这些代码,开发者可以更好地理解和应用多线程技术。 总结,本主题涵盖了线程创建、等待、...
Thread类是.NET Framework中的System.Threading命名空间下的一个核心组件,它提供了创建和控制线程的方法。以下是一些关于使用Thread类创建多线程的关键知识点: 1. **创建线程对象**: 首先,我们需要创建Thread...
线程的基本概念、线程类...在Java中,可以使用Thread类的join()方法实现线程的合并。 线程的中断是指在一个线程中断另一个线程的执行。在Java中,可以使用Thread类的interrupt()方法实现线程的中断。(run方法执行完毕)
本文实例讲述了C#多线程之Thread中Thread.Join()函数用法。分享给大家供大家参考。具体分析如下: Thread.Join()在MSDN中的解释:Blocks the calling thread until a thread terminates 当NewThread调用Join方法的...
`join()`方法定义在`java.lang.Thread`类中,它使得多线程间的协作更加有序。 首先,我们来看`join()`的基本用法。在`Father`类(主线程类)中,创建了一个`Son`类(子线程类)的实例`s`,并调用`s.start()`启动子...
线程可以通过 join() 方法等待线程的退出。 5. 线程的优先级 Thread 类提供了 setThreadPriority() 方法来设置线程的优先级,优先级范围从 1 到 99,其中 99 是实时优先级,其他值是普通优先级。线程的优先级可以...
join()方法是Thread类中的一个实例方法,当一个线程A执行了threadB.join()操作时,线程A会等待线程B执行完成后才继续执行。这通常用于需要等待子线程完成之后才继续执行的情况。 以上就是对Java线程中wait、await、...
C++11中关于std::thread的join详解 C++11引入了std::thread库,提供了对多线程编程的支持。std::thread库提供了两个基本操作:join和detach。join操作用于回收线程资源,避免资源泄露;detach操作用于将线程与创建...
- **start()和run()**:`start()`方法用于启动线程并执行`run()`方法中的代码。直接调用`run()`方法则不会创建新线程,而是同步执行。 - **join()**:使当前线程等待特定线程完成执行。 - **interrupt()**:中断...
`Join`方法可用于等待线程结束。 8. **线程池**:为了提高效率,C#提供了线程池。线程池中的线程可以重复使用,减少了创建和销毁线程的开销。`ThreadPool.QueueUserWorkItem`方法用于将工作项添加到线程池。 9. **...
`start`方法负责启动线程,通过遍历`func_list`,为每个函数创建一个新的`Thread`实例,然后调用`start`方法启动线程。`join`方法被用来等待所有线程执行完毕,确保主线程不会提前结束。 为了获取线程函数的返回值...
在上述示例中,我们定义了一个简单的线程函数`threadFunction`,并通过`std::thread`构造函数创建了一个线程。调用`t.join()`确保主线程等待新创建的线程执行完毕后才继续执行。 ### 二、线程的终止 #### 2.1 使用...
本文将深入探讨Java中的多线程操作方法,包括线程控制的基本方法、中断和睡眠以及相关示例。 首先,了解线程的基本状态至关重要。线程在运行过程中可能处于新建、可运行、运行、阻塞或死亡等状态。`isAlive()`方法...