此 java 代码中可能存在竞争条件?
Possible race condition in this java code?
class Employee {
transient Department = new Department();
}
class Department {
boolean isClosed;
}
默认情况下 isClosed
为假,我的逻辑中的某些点已更改为 true
(Department.isClosed = true
) 但后来在处理过程中又更改回 false
== > 没有逻辑明确地改变这个。
根据我的理解,我怀疑这是由于 Race Condition 导致的,其中不同的线程修改了此标志或一个线程未获取更新的数据视图。
有没有办法证明这个理解?或者可能还有其他嫌疑人?
请注意,由于我们很少在生产中遇到此问题,因此很难(重试和处理总共 8-10 小时)。
如果 isClosed
被修改然后从不同的线程访问,您需要使它成为易变的。在另一种情况下,即使在看到更新的值之后,不同的线程也可能看到陈旧的值。
class Employee {
transient Department = new Department();
}
class Department {
boolean isClosed;
}
默认情况下 isClosed
为假,我的逻辑中的某些点已更改为 true
(Department.isClosed = true
) 但后来在处理过程中又更改回 false
== > 没有逻辑明确地改变这个。
根据我的理解,我怀疑这是由于 Race Condition 导致的,其中不同的线程修改了此标志或一个线程未获取更新的数据视图。
有没有办法证明这个理解?或者可能还有其他嫌疑人?
请注意,由于我们很少在生产中遇到此问题,因此很难(重试和处理总共 8-10 小时)。
如果 isClosed
被修改然后从不同的线程访问,您需要使它成为易变的。在另一种情况下,即使在看到更新的值之后,不同的线程也可能看到陈旧的值。