首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同步作为易失性声明的替代方案

同步作为易失性声明的替代方案
EN

Stack Overflow用户
提问于 2016-10-23 05:46:12
回答 2查看 157关注 0票数 0

在本教程(链接)中,关于Java的易失性声明,据说易失性声明可以替代同步。

作者使用易失性声明的示例:

代码语言:javascript
复制
volatile boolean shutdownRequested;

...

public void shutdown() { shutdownRequested = true; }

public void doWork() { 
    while (!shutdownRequested) { 
        // do stuff
    }
}

我对同步的天真实现应该是:

代码语言:javascript
复制
volatile boolean shutdownRequested;

...

synchronized public void shutdown() { shutdownRequested = true; }

synchronized public void doWork() { 
    while (!shutdownRequested) { 
        // do stuff
    }
}

如果线程A在线程B已经调用并正在运行shutdown时调用doWork,那么线程B似乎会持续锁定执行,因为它是一个循环。这似乎没有给线程A访问布尔值的机会。作者想到了什么作为可变声明的同步替代方案?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40199967

复制
相关文章

相似问题

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