首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中最简单易懂的volatile关键字示例

Java中最简单易懂的volatile关键字示例
EN

Stack Overflow用户
提问于 2013-07-19 22:02:34
回答 12查看 79.7K关注 0票数 83

我正在阅读Java中的volatile关键字,并且完全理解它的理论部分。

但是,我正在寻找的是一个很好的例子,它展示了如果变量不是易失性的,以及如果变量是易失性的,会发生什么。

下面的代码片段不能按预期工作(取自here):

class Test extends Thread {

    boolean keepRunning = true;

    public void run() {
        while (keepRunning) {
        }

        System.out.println("Thread terminated.");
    }

    public static void main(String[] args) throws InterruptedException {
        Test t = new Test();
        t.start();
        Thread.sleep(1000);
        t.keepRunning = false;
        System.out.println("keepRunning set to false.");
    }
}

理想情况下,如果keepRunning不是易失性的,线程应该无限期地运行。但是,它确实会在几秒钟后停止。

我有两个基本问题:

  • 有人能用例子来解释一下volatile吗?
  • 不是同步的易失性替代品吗?它实现原子性了吗?
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17748078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档