线程安全性问题-可见性

线程和线程之间,一个线程可能看不到另一个线程的操作,称为可见性问题。

代码:

public class Test01 {


    static int a = 0;


    public static void main(String[] args) {

        //匿名内部类创建第一个线程
        Thread t0 = new Thread(){
            @Override
            public void run() {
                System.out.println("t0开始执行了");
                //循环
                while(true){
                    if(a == 10){
                        System.out.println("a的值是10");
                        break;
                    }
                }
            }
        };


        //匿名内部类创建第二个线程
        Thread t1 = new Thread(){
            @Override
            public void run() {
                System.out.println("t1开始执行了");
                //让当前线程睡觉两秒钟
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                }


                //修改a的值
                a = 10;
                System.out.println("t1把a的值改成10了");
            }
        };


        //开启线程
        t0.start();
        t1.start();
    }
}

结果:
t0开始执行了
t1开始执行了
t1把a的值改成10了

图解:

 

posted @ 2021-08-09 16:24  冰红茶灬  阅读(55)  评论(0编辑  收藏  举报