学到volatile关键字,忽然想是不是可以通过volatile关键字来实现一个双线程交替打印呢,所以就写了这个,因为还是萌新,所以若有错还请评论告知
import java.util.ArrayList;
import java.util.List;
public class MyCAS {
private volatile static int lock1 = 1;
private volatile static int lock2 = 1;
public static void lock1() { //线程1死循环
while (lock1 != 1) {
}
lock1 = 0;
}
public static void notify1() { //唤醒线程1
lock1 = 1; //让线程1 死循环
lock2 = 0; //唤醒线程2
}
public static void lock2() { //让线程2死循环
while (lock2 != 1) {
}
lock2 = 0;
}
public static void notify2() {
lock1 = 0; //让线程1 死循环
lock2 = 1; //唤醒线程2
}
public static void main(String[] args) {
char[] a = "123456789".toCharArray();
char[] b = "ABCDEFGHI".toCharArray();
new Thread(() -> {
for (int i = 0; i < a.length; i++) {
lock1();
System.out.print(a[i]);
notify2();
}
}).start();
new Thread(() -> {
for (int i = 0; i < b.length; i++) {
lock2();
System.out.print(b[i]);
notify1();
}
}).start();
}
}