华为多线程面试题解法四(CAS自旋)
package src.main.java.com.qqjx.thread;
public class T03_00_cas {
enum ReadyToRun {T1, T2}
static volatile ReadyToRun r = ReadyToRun.T1;
public static void main(String[] args) {
char[] aI = "1234567".toCharArray();
char[] aC = "ABCDEFG".toCharArray();
new Thread(() -> {
for (char c : aI) {
while (r != ReadyToRun.T1) {}
System.out.println(c);
r = ReadyToRun.T2;
}
}, "t1").start();
new Thread(() -> {
for (char c : aC) {
while (r != ReadyToRun.T2) {}
System.out.println(c);
r = ReadyToRun.T1;
}
}, "t2").start();
}
}
1
A
2
B
3
C
4
D
5
E
6
F
7
G