juc之java并发编程

线程间内存可见性问题

  • 内存可见性问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class TestVolatile {
public static void main(String[] args){
ThreadDemo threadDemo=new ThreadDemo();
new Thread(threadDemo).start();
while (true){
if(threadDemo.getFlag()){
System.out.println(Thread.currentThread().getName()+threadDemo.getFlag()+"========");
}
}
}
}
class ThreadDemo implements Runnable{
private Boolean flag=false;
public Boolean getFlag() {
return flag;
}
public void setFlag(Boolean flag) {
this.flag = flag;
}
@Override
public void run() {
try {
Thread.sleep(2000);
flag=true;
} catch (InterruptedException e) {
e.printStackTrace();
}
if(flag){
System.out.println(Thread.currentThread().getName()+flag+"======");
}
}
}

==运行结果如下==

image

主线程中始终不会输出此时就出现了线程间的内存可见性问题
image

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 线程间内存可见性问题
,