Skip to content

Commit e0cd296

Browse files
committed
并发测试相关代码提交
1 parent dab537c commit e0cd296

1 file changed

Lines changed: 50 additions & 35 deletions

File tree

src/main/java/com/prd/concurrent/ThreadJoinTest.java

Lines changed: 50 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,63 @@
66
* 线程等待JOIN测试
77
*/
88
public class ThreadJoinTest {
9+
910
public static void main(String[] args) throws InterruptedException {
11+
testJoinNormal();
12+
}
13+
14+
/**
15+
* join常规用法
16+
*/
17+
private static void testJoinNormal() {
18+
19+
class ThreadB extends Thread {
20+
@Override
21+
public void run() {
22+
for(;;) {
23+
24+
}
25+
}
26+
}
27+
28+
class ThreadA extends Thread {
29+
30+
public ThreadB threadB;
31+
32+
public ThreadA(ThreadB threadB) {
33+
this.threadB = threadB;
34+
}
35+
36+
@Override
37+
public void run() {
38+
threadB.start();
39+
try {
40+
TimeUnit.SECONDS.sleep(1);
41+
} catch (InterruptedException e) {
42+
e.printStackTrace();
43+
}
44+
System.out.println("线程B在JOIN前的状态:"+threadB.getState().name());
45+
try {
46+
threadB.join(10000);
47+
} catch (InterruptedException e) {
48+
e.printStackTrace();
49+
}
50+
System.out.println("线程A在JOIN后的状态:"+getState().name());
51+
System.out.println("线程B在JOIN后的状态:"+threadB.getState().name());
52+
}
53+
}
54+
1055
ThreadB threadB = new ThreadB();
1156
ThreadA threadA = new ThreadA(threadB);
1257
threadA.start();
1358
System.out.println("线程A在JOIN前的状态:"+threadA.getState().name());
14-
TimeUnit.SECONDS.sleep(3);
59+
try {
60+
TimeUnit.SECONDS.sleep(3);
61+
} catch (InterruptedException e) {
62+
e.printStackTrace();
63+
}
1564
System.out.println("线程A在JOIN中的状态:"+threadA.getState().name());
1665
}
17-
}
1866

19-
class ThreadA extends Thread {
20-
21-
public ThreadB threadB;
22-
23-
public ThreadA(ThreadB threadB) {
24-
this.threadB = threadB;
25-
}
26-
27-
@Override
28-
public void run() {
29-
threadB.start();
30-
try {
31-
TimeUnit.SECONDS.sleep(1);
32-
} catch (InterruptedException e) {
33-
e.printStackTrace();
34-
}
35-
System.out.println("线程B在JOIN前的状态:"+threadB.getState().name());
36-
try {
37-
threadB.join(10000);
38-
} catch (InterruptedException e) {
39-
e.printStackTrace();
40-
}
41-
System.out.println("线程A在JOIN后的状态:"+getState().name());
42-
System.out.println("线程B在JOIN后的状态:"+threadB.getState().name());
43-
}
4467
}
4568

46-
class ThreadB extends Thread {
47-
@Override
48-
public void run() {
49-
for(;;) {
50-
51-
}
52-
}
53-
}

0 commit comments

Comments
 (0)