可能性の重複:私の理解で
Are Thread.sleep(0) and Thread.yield() statements equivalent?JavaでThread.yield()とThread.sleep(0)の違いは何ですか?
、Thread.yield()とのThread.sleepの両方が(0)スレッドがいくつかのスケジューリングアルゴリズムによって実行するためのCPU再度判断をしなければなりません。
違いがある:
Thread.yield()他のスレッドに執行機会を与えることですが、のThread.sleep(0)、それはちょうどあなたが再配置すべきCPUを教えてあげるません。実行スレッドは現在のスレッド自体を含む。
Thread.yield()はまったく受け入れられないかもしれないが、Thread.sleep(0)は強制的に並べ替えることを意味するだけのアドバイスです。
上記の2つの結論は正しいですか?
これらのメソッドは非常に実装依存であるため、言うことは非常に難しいです。これらのメソッドの振る舞いに頼るべきではありません。たとえば、Thread.yield()だけのループがあれば、CPUの99%以上を放棄しません。 Thread.sleep(0)は、OSに応じて0.5〜2msの間スリープすることがありますが、CPUをあきらめてしまいます。 –