我问这个问题只是出于好奇,我知道这样做很愚蠢。
public void doSomething()
{
synchronized(object_A){
count++;
average = count/total;
}
}
现在假设我有 2 个线程同时运行(调用函数 doSomething()),而第一个线程已经进入块,假设在“count++”行,第二个线程被阻塞并等待锁。
现在我尝试做object_A = new LockObject()
(在另一个线程中)。现在线程 1 和线程 2 会发生什么?
线程 2 会进入块吗?既然已经执行了语句“synchronized(object_A)”,那么换锁是不是太晚了?
线程 1 在同步块中是否会更改锁(假设线程 1 仍在块中)?