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的可见性,但是这段代码一直证明不了。朋友提示是因为,修改的不是共享变量。
那什么什么是共享变量呢?
共享变量的意思就是每个线程都可以访问到的变量,比如:成员变量