Loading

多线程循环打印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++

posted @ 2020-11-16 16:57  ingxx  阅读(160)  评论(0编辑  收藏  举报