技术社区

并发编程中,什么是共享变量?
006 | 发表于: 2020-02-09 回答
package com.luke.Thread; public class VolatileDemo002 { public static void main(String[] args) {
        seeByVolatile();
    } private static void seeByVolatile(){
         DataNum dn = new DataNum(); new Thread(new Runnable() {
            @Override public void run() {
                System.out.println("分线程开始执行"); try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                dn.num = 60;
                System.out.println("线程修改结束后:"+dn.num);
                
            }
        },"分线程").start(); while(dn.num == 0){
            System.out.println("可见性测试失败");
        }
        
        System.out.println("主线程和分线程都执行结束了");
    }
    
} class DataNum{ int num = 0;
}

这段代码本来想证明volatile的可见性,但是这段代码一直证明不了。朋友提示是因为,修改的不是共享变量。

那什么什么是共享变量呢?

回复列表