Thread.currentThread().yield()
これはスレッド スケジューラへの通知であり、CPU サイクルが同じ優先度の他のスレッドに割り当てられる可能性があることを理解しています。私の質問は次のとおりです。現在のスレッドがいくつかのオブジェクトと呼び出しをロックしている場合、yield()
そのロックはすぐに失われますか? そして、スレッド スケジューラが、CPU サイクルを割り当てるスレッドが存在しないことを発見すると、呼び出したスレッドは、yield()
以前に失ったオブジェクトをロックするために再び戦いますか??
javadoc やフォーラム [http://www.coderanch.com/t/226223/java-programmer-SCJP/certification/does-sleep-yield-release-lock] には 50 ~ 50 の回答がありませんでした。
yield()
同じ優先度のスレッド(スレッド2としましょう)が同じオブジェクトを操作したい場合、スレッドスケジューラが最終的にスレッド2にカップを割り当てる可能性があるため、(スレッド1としましょう)ロックを解放する必要があると思います。