// In Thread1
x=5;
synchronization(obj)
{
// do something (no operations involving x)
}
// In thread 2
synchronization(obj)
{
// do something(operations involving x)
}
是否有要求 JVM 在进入该块之前首先执行同步块之前的所有语句。在 Thread-1 中,由于同步块没有任何操作,x
所以它可以先执行同步块,然后执行赋值操作x=5
。
x
Thread-2在其同步块中看到的值是什么。x = 0
假设 Thread-1 首先执行,然后 Thread-2 执行,并且在创建 对象时它们都在同一个对象上运行。
我们可以说 Thread-1 中的同步块发生在 Thread-2 中的同步块之前。x
那么Thread-2 在其同步块中的值应该是什么?