Java 线程的join方法

2025-04-13 12:27:12

1、join()Waits for this thread to die.join(long millis)Waits at most millis millisec泠贾高框onds for this thread to die. A timeout of 0 means to wait forever.join(long millis, int nanos)Waits at most millis milliseconds plus nanos nanoseconds for this thread to die.上面是jdk中对join的三个函数的解释,join()是等待调用此方法的线程结束,join(long millis)是等待线程结束或等待millis毫秒,当millis=0时就相当于join()方法,join(long millis, int nanos)则是将等待的时间精确到十亿分之一秒。。简单说就是join方法是让别的线程等待调用该方法的线程执行完或者等待一定的时间。

2、在eclipse中新建一个java工程项目,创建类Main。工程目录及Main.java的内容如图。

Java 线程的join方法
Java 线程的join方法
Java 线程的join方法

3、Main类中有一个静态的printNum方法和一个main方法。在main方法中创建两个线程,分别为a和b。如图,在线程b中,线程a调用了j泠贾高框oin()方法,运行程序,控制台输出如图。线程b在线程a结束后才继续执行。

Java 线程的join方法
Java 线程的join方法

4、接着如图将a.join()改为a.join(20)。运行程序,控制台输出如图。可以看到,加入时间限定后,线程b在线程a结束之前就开始执行了。

Java 线程的join方法

5、如图将a.join(20)改为a.join(200)。运行程序,控制台输出如图。线程b在线程a打印两个数后开始执行。说明线程b等待了线程a一定的时间。

Java 线程的join方法

6、最后如图给printNum加锁,运行程序,控制台输出如图。可以看到,加锁后,就算join()方法中加了时间限制,线程b仍得等待线程a执行完,释放锁后,才能继续执行。

Java 线程的join方法
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢