多執行緒迴圈列印ABC
阿新 • • 發佈:2020-11-16
題目
據說是阿里的題目,多個執行緒同時啟動,迴圈列印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++