首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这段java代码中可能存在竞争条件?

这段java代码中可能存在竞争条件?
EN

Stack Overflow用户
提问于 2021-02-12 16:40:00
回答 1查看 90关注 0票数 0
代码语言:javascript
复制
class Employee {
   transient Department = new Department();
}   
代码语言:javascript
复制
class Department {
   boolean isClosed;
}

默认情况下,isClosed是false,在我的逻辑中的某个点,它被更改为true (Department.isClosed = true),但在稍后的过程中,它又被更改回false ==>没有逻辑来显式地更改这一点。

根据我的理解,我怀疑这是由于竞争条件造成的,不同的线程修改了这个标志,或者一个线程没有获得更新的数据视图。

有什么办法可以证明这一点吗?或者其他嫌犯呢?

请注意,它很难(总共8-10小时的重试和处理)来重现这个问题,因为我们很少在生产中遇到这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-13 01:00:36

如果isClosed被修改,然后从不同的线程访问,则需要使其成为易失性的。在另一种情况下,即使在看到更新的值之后,不同的线程也可能看到陈旧的值。

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

https://stackoverflow.com/questions/66168631

复制
相关文章

相似问题

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