Java线程中join()方法
join() 等待线程运行结束
t.join()阻塞调用此方法的线程,会调用t对象的wait方法,直到线程t执行完成后,此线程再继续执行。
- join()源码中调用了wait方法,但是没有看到notify或者notifyAll方法,如何唤醒的?
Thread类线程执行完run()方法后,一定会自动执行notifyAll()方法。因为线程在终止的时候会释放持用的资源和锁,自动调用自身的notifyAll方法。
使用join()方法让线程t1,t2,t3顺序执行
public class JoinDemo {
public static void main(String[] args) {
Thread t1 = new Thread(()->{
System.out.println("线程t1执行...");
});
Thread t2 = new Thread(()->{
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程t2执行...");
});
Thread t3 = new Thread(()->{
try {
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程t3执行...");
});
t1.start();
t2.start();
t3.start();
}
}
输出结果:
线程t1执行...
线程t2执行...
线程t3执行...
public class JoinDemo1 {
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(()->System.out.println("线程t1执行..."));
Thread t2 = new Thread(()->System.out.println("线程t2执行..."));
Thread t3 = new Thread(()->System.out.println("线程t3执行..."));
t1.start();
t1.join();
t2.start();
t2.join();
t3.start();
}
}
输出结果:
线程t1执行...
线程t2执行...
线程t3执行...

5360

被折叠的 条评论
为什么被折叠?



