首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >挥发性布尔值

挥发性布尔值
EN

Stack Overflow用户
提问于 2009-12-14 02:10:23
回答 7查看 4.2K关注 0票数 3

如果我有一个易失性布尔值(让我们称之为有效),下面这段代码在Java中是线程安全的吗?

代码语言:javascript
代码运行次数:0
运行
复制
if (valid)
  return;
valid = true;

或者,我是否需要同步,因为只有当valid为false时才将其设置为true (因此,valid的集合取决于其当前值)?

EN

回答 7

Stack Overflow用户

发布于 2009-12-14 02:15:29

这需要同步,因为如果一个线程将valid计算为false,然后在赋值之前暂停执行,那么另一个线程也会出现,并将valid检查为false,在将valid设置为true之前,您将有两个线程从这里开始运行代码(这可能不是您想要的)。

票数 8
EN

Stack Overflow用户

发布于 2009-12-14 02:33:06

使用AtomicBoolean。可以同时检查和设置实例。

票数 5
EN

Stack Overflow用户

发布于 2009-12-14 02:11:40

它不是线程安全的。但如果这是整个代码,那就没什么关系了。

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

https://stackoverflow.com/questions/1897211

复制
相关文章

相似问题

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