·join合并线程,待此线程执行完成后,再执行其它线程,
其
它
线
程
阻
塞
\color{red}{其它线程阻塞}
其它线程阻塞
应理解为插队,后面的车要等插进来的车走才能走。
public class BlockedJoin {
public static void main(String[] args) {
System.out.println("爸爸和儿子买烟的故事");
new Father().start();
}
}
class Father extends Thread {
@Override
public void run() {
System.out.println("想抽烟,发现没了");
System.out.println("让儿子去买中华");
Son son = new Son();
son.start();
try {
son.join(); //Father被阻塞
System.out.println("老爸接过烟,把零钱给了儿子");
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("孩子走丢了,老爸去找孩子了。。。");
}
}
}
class Son extends Thread {
@Override
public void run() {
System.out.println("接过老爸的钱出去了。。。。");
System.out.println("路边有个游戏厅,玩了10秒");
for (int i = 1; i < 11; i++) {
System.out.println(i + "秒过去了...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("赶紧买烟去。。。。");
System.out.println("手拿一包中华回家了。。。。");
}
}