首页新闻找找看学习计划

并发编程中,什么是共享变量?

0
[待解决问题]
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的可见性,但是这段代码一直证明不了。朋友提示是因为,修改的不是共享变量。

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

lukely的主页 lukely | 菜鸟二级 | 园豆:220
提问于:2020-02-06 15:42
< >
分享
所有回答(1)
0

共享变量的意思就是每个线程都可以访问到的变量,比如:成员变量

lzj123 | 园豆:146 (初学一级) | 2020-02-08 10:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册