1. 程式人生 > 實用技巧 >多執行緒迴圈列印ABC

多執行緒迴圈列印ABC

題目

據說是阿里的題目,多個執行緒同時啟動,迴圈列印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++