1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-25 02:27:10 +08:00

Update unsafe.md

This commit is contained in:
guide 2022-07-19 20:34:38 +08:00
parent 752fc401cb
commit 7c88811e3e

View File

@ -258,21 +258,19 @@ class ChangeThread implements Runnable{
在主线程的`while`循环中,加入内存屏障,测试是否能够感知到`flag`的修改变化:
```java
@Getter
class ChangeThread implements Runnable{
/**volatile**/ boolean flag=false;
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
public static void main(String[] args){
ChangeThread changeThread = new ChangeThread();
new Thread(changeThread).start();
while (true) {
boolean flag = changeThread.isFlag();
unsafe.loadFence(); //加入读内存屏障
if (flag){
System.out.println("detected flag changed");
break;
}
System.out.println("subThread change flag to:" + flag);
flag = true;
}
System.out.println("main thread end");
}
```
运行结果: