首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java中volatile的使用及说明

Java中volatile的使用及说明

作者头像
夹胡碰
发布2020-12-23 12:22:41
发布2020-12-23 12:22:41
5800
举报
文章被收录于专栏:程序猿~程序猿~

1. volatile具备两项特性:

  1. 保证此变量对所有线程的可见性。
  2. 禁止指令重排序优化

以下摘自 深入理解Java虚拟机 第三版 12章 Java内存模型与线程

2. volatile测试

代码语言:javascript
复制
public class MainTest {

    private volatile static boolean bool = true;

    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(new Thread0());
        thread.start();

        Thread.sleep(2000);
        bool = false;
        System.out.println("main - 结束");
    }

    public static class Thread0 implements Runnable{

        @Override
        public void run() {
            while (bool){//能立刻知晓volatile bool 值的改变
            }

            System.out.println("Thread0 - 结束");
        }
    }
}
  • 输出结果
代码语言:javascript
复制
main - 结束
Thread0 - 结束
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1. volatile具备两项特性:
  • 2. volatile测试
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档