java线程之Thread.join()方法


1. Thread.join 方法的作用

方法 join 的作用是 使所属的线程对象正常执行 run() 方法中的任务, 而使当前线程进行无限期(或指定时间)的阻塞, 等待方法join所属线程销毁后再继续执行当前线程后续的代码;

2. Thread.join 方法的实现细节

join方法1

具体实现细节如下图:

join方法2

注意到jdk源码中并没有出现 Thread.join 方法所属线程对象主动通知(即调用 notifynotifyAll 方法)来唤醒被阻塞的"当前线程", 而是在所属线程执行完毕(即运行完 run() 方法)后调用指定的本地方法来做收尾工作, 其中就包括唤醒在这个线程对象上wait的所有线程

3. 方法 join(long)sleep(long) 的区别

join(long)sleep(long) 方法的区别在于: join(long) 方法会释放所持有的对象锁, 而 sleep(long) 方法不会释放所持有的对象锁;

你可能感兴趣的:(java线程之Thread.join()方法)