题目
据说是阿里的题目,多个线程同时启动,循环打印ABC
解法
看了很多解法有使用锁的,同步关键字的,信号量的,自己用volatile关键字写了一个不知道对不对
private static volatile int a = 1 ;
public static void main(String[] args) {
new Thread(()->{
while (true){
if(a == 1){
System.out.print("a");
a = 2;
}
}
}).start();
new Thread(()->{
while (true){
if(a == 2){
System.out.print("b");
a = 3;
}
}
}).start();
new Thread(()->{
while (true){
if(a == 3){
System.out.println("c");
a =1 ;
}
}
}).start();
}
结果
注意
volatile只能保证可见性和有序性,并不能保证原子性,如i++