私はこの質問を好奇心のためだけに尋ねています、私はそのようなことをするのは愚かであることを知っています。
public void doSomething()
{
synchronized(object_A){
count++;
average = count/total;
}
}
ここで、2つのスレッドを同時に実行しているとしましょう(関数doSomething()を呼び出します)。最初のスレッドがすでにブロックに入っているときに、たとえば「count ++」の行で、2番目のスレッドがブロックされてロックを待機しています。
object_A = new LockObject()
今、私は(別のスレッドで)やろうとしています。では、スレッド1とスレッド2はどうなりますか?
スレッド2はブロックに入りますか?すでにステートメント「synchronized(object_A)」を実行しているので、ロックを変更するには遅すぎますか?
スレッド1は同期ブロックにいる間にロックを変更しますか(スレッド1がまだブロックにあると仮定します)?