3

2 つのスレッドが、正確なミリ秒単位または (最小 CPU ユニットが何であれ) まったく同じ時刻に同期メソッドにアクセスしようとすると、どうなりますか? 優先度が同じ場合、JVM/システムがこの問題をどのように解決するか。デッドロックを作成しますか? また、ロックに関するこの情報はどこに保存されますか?

4

2 に答える 2

5

それがスレッド化の要点です。オペレーティング システムのジョブ スケジューラでは、一方を他方より先に実行できます。デッドロックは発生しません。

実際、ジョブ スケジューラはプロセスの重い fork 用です。JVM はThread、実行する順番があるか、同期ブロックに入る順番があるかを処理します。

于 2012-11-17T19:30:51.173 に答える
2

入力ブロックは、オペレーティング システムでアトミックミューテックスまたはセマフォsynchronizedを取得するように内部的に変換されます。これらの構造は、アトミックであることが保証されています。したがって、何も問題は発生しません。常に1つのメソッドが最初に実行されます。マルチコア、マルチ CPU マシンでも、一度に 1 つのスレッドだけがセマフォ/ミューテックスを取得できます。

間違いなくデッドロックを作成しない場合。デッドロックを作成するには、競合する 2 つのリソースが必要です。

于 2012-11-17T19:32:03.047 に答える