参考博客:https://www.cnblogs.com/lcplcpjava/p/6896904.html
第一种情况(不使用join):
ThreadJoinTest t1 = new ThreadJoinTest("小明");
ThreadJoinTest t2 = new ThreadJoinTest("小东");
t1.start();
t2.start();
这种情况下,线程t1、线程t2公平争抢
第二种情况(join的作用):
ThreadJoinTest t1 = new ThreadJoinTest("小明");
ThreadJoinTest t2 = new ThreadJoinTest("小东");
t1.start();
t1.join();
t2.start();
线程t1、线程t2使得原来公平争抢,变成了线程t1调用join的这个线程,线程t1拥有了更高的权限(t1线程跑完了,t2才会走)
第三种情况(join不起作用):
ThreadJoinTest t1 = new ThreadJoinTest("小明");
ThreadJoinTest t2 = new ThreadJoinTest("小东");
t1.join();
t1.start();
t2.start();
线程t1、线程t2交替争抢(join不起作用)
原因:采用上面博客的结论
join方法是通过调用线程的wait方法来达到同步的目的的。例如,A线程中调用了B线程的join方法,则相当于A线程调用了B线程的wait方法,在调用了B线程的wait方法后,A线程就会进入阻塞状态