Skip to content

Commit 33ae7fd

Browse files
Create 多线程.md
1 parent aadd3cc commit 33ae7fd

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

多线程.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# Java
2+
3+
两个交替打印数字
4+
5+
```java
6+
package src.MultiThreading.AlternatePrint;
7+
8+
9+
public class AP1 {
10+
11+
private static int num = 0;
12+
13+
public static void main(String[] args) {
14+
Object lock = new Object();
15+
Thread thread1 = new Thread(() -> {
16+
while(true){
17+
synchronized (lock){
18+
lock.notify();
19+
System.out.println("THREAD1 " + num++);
20+
try {
21+
Thread.sleep(1000);
22+
lock.wait();
23+
} catch (InterruptedException e) {
24+
throw new RuntimeException(e);
25+
}
26+
}
27+
}
28+
});
29+
Thread thread2 = new Thread(() -> {
30+
while(true){
31+
synchronized (lock){
32+
lock.notify();
33+
System.out.println("THREAD2 " + num++);
34+
try {
35+
Thread.sleep(1000);
36+
lock.wait();
37+
} catch (InterruptedException e) {
38+
throw new RuntimeException(e);
39+
}
40+
}
41+
}
42+
});
43+
thread1.start();
44+
thread2.start();
45+
}
46+
}
47+
```
48+
49+
三个线程交替打印
50+
51+
```java
52+
package src.MultiThreading.AlternatePrint;
53+
54+
class ThreeThreadAP2 {
55+
56+
57+
private static int num = 0;
58+
59+
private static Object lock = new Object();
60+
61+
62+
public static void main(String[] args) {
63+
64+
new Thread(() -> {
65+
while(true){
66+
synchronized (lock){
67+
if(num % 3 == 0){
68+
lock.notifyAll();
69+
System.out.println("Thread1 " + num++);
70+
try {
71+
Thread.sleep(1000);
72+
lock.wait();
73+
} catch (InterruptedException e) {
74+
throw new RuntimeException(e);
75+
}
76+
}
77+
78+
}
79+
}
80+
}).start();
81+
new Thread(() -> {
82+
while(true){
83+
synchronized (lock){
84+
if(num % 3 == 1){
85+
lock.notifyAll();
86+
System.out.println("Thread2 " + num++);
87+
try {
88+
Thread.sleep(1000);
89+
lock.wait();
90+
} catch (InterruptedException e) {
91+
throw new RuntimeException(e);
92+
}
93+
}
94+
}
95+
}
96+
}).start();
97+
new Thread(() -> {
98+
while(true){
99+
synchronized (lock){
100+
if(num % 3 == 2){
101+
lock.notifyAll();
102+
System.out.println("Thread3 " + num++);
103+
try {
104+
Thread.sleep(1000);
105+
lock.wait();
106+
} catch (InterruptedException e) {
107+
throw new RuntimeException(e);
108+
}
109+
}
110+
}
111+
}
112+
}).start();
113+
}
114+
}
115+
```
116+

0 commit comments

Comments
 (0)