Fork me on GitHub

多线程-join方法

作用

用于控制线程执行的顺序。

例如如下代码

A类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class A extends Thread {
public void run() {
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("A开始第"+i+"次休息");
System.out.println("A"+i);
}

}
}

B类

1
2
3
4
5
6
7
8
9
10
11
12
13
public class B extends Thread {
public void run() {
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("B开始第"+i+"次休息");
System.out.println("B"+i);
}
}
}

Main类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Main {

public static void main(String[] args) throws InterruptedException {
A a=new A();
B b=new B();
a.start();
System.out.println("A开始join");
a.join();
b.start();
System.out.println("B开始join");
b.join();
System.out.println("Hello World!");
}
}

执行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
A开始join
A开始第1次休息
A1
A开始第2次休息
A2
A开始第3次休息
A3
A开始第4次休息
A4
A开始第5次休息
A5
B开始join
B开始第1次休息
B1
B开始第2次休息
B2
B开始第3次休息
B3
B开始第4次休息
B4
B开始第5次休息
B5
Hello World!