可见性(Visibility):是指一个线程对共享变量进行修改,另一个先立即得到修改后的最新值
案例演示:一个线程根据boolean类型的标记flag,while循环,另一个线程改变这个flag变量的值,另一个线程并不会停止循环
- /**
- * 案例演示:
- * 一个线程对共享变量的修改,另一个线程不能立即得到最新值
- */
- public class Test01Visibility {
- // 多个线程都会访问的数据,我们称为线程的共享数据
- private static boolean run = true;
-
- public static void main(String[] args) throws InterruptedException {
- Thread t1 = new Thread(() -> {
- while (run) {
- }
- });
- t1.start();
- Thread.sleep(1000);
- Thread t2 = new Thread(() -> {
- run = false;
- System.out.println("时间到,线程2设置为false");
- });
- t2.start();
- }
- }