线程安全性问题-可见性
线程和线程之间,一个线程可能看不到另一个线程的操作,称为可见性问题。
代码:
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了
图解: