我知道复合操作i++不是线程安全的,因为它们涉及多个操作.
但是检查引用本身是一个线程安全的操作?
a != a //is this thread-safe
Run Code Online (Sandbox Code Playgroud)
我尝试编程并使用多个线程,但它没有失败.我想我无法在我的机器上模拟比赛.
public class TestThreadSafety {
private Object a = new Object();
public static void main(String[] args) {
final TestThreadSafety instance = new TestThreadSafety();
Thread testingReferenceThread = new Thread(new Runnable() {
@Override
public void run() {
long countOfIterations = 0L;
while(true){
boolean flag = instance.a != instance.a;
if(flag)
System.out.println(countOfIterations + ":" + flag);
countOfIterations++;
}
}
});
Thread updatingReferenceThread = new Thread(new Runnable() {
@Override
public void run() …Run Code Online (Sandbox Code Playgroud)