From 7c88811e3e55f06b3d879a4905f589279d666dee Mon Sep 17 00:00:00 2001 From: guide Date: Tue, 19 Jul 2022 20:34:38 +0800 Subject: [PATCH] Update unsafe.md --- docs/java/basis/unsafe.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docs/java/basis/unsafe.md b/docs/java/basis/unsafe.md index 0ec285f9..c4898cfb 100644 --- a/docs/java/basis/unsafe.md +++ b/docs/java/basis/unsafe.md @@ -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"); } - ``` 运行结果: