java - multithreaded - multithreading python




Java:LockSupport.parkNanosとThread.sleep(...) (2)

LockSupportははるかに限定されたアプリケーションを持ち、例外処理をサポートしていません。 単一のスレッドのみをロックする必要がある場合は、OKです。

APIから:

これらのメソッドは、より高度な同期ユーティリティを作成するためのツールとして使用されるように設計されており、ほとんどの同時実行制御アプリケーションにとって有用ではありません。

場合によっては、ほとんどの人が次のようなことを書いています。

try {
   Thread.sleep(2000); 
} catch (InterruptedException e) {
   ; // do nothing
}

正しいかどうか、いくつかのテストハーネスでしか受け入れられないかどうかは、私の指摘ではありません。 私の指摘は、同じコードを、より簡潔に書くことができることです。

  LockSupport.parkNanos(2000* 1000000);

私が他のアプローチよりも1つのアプローチを好むべき理由があります。


メソッドparkNanosのドキュメントは、メソッドが返すことができる条件を提供します。 これらの条件のうちの1つは、コールが偽りに(すなわち理由なしで)返されることです。 だから基本的には、偽の目覚めや他のスレッドが待っているスレッドを考慮しないように気を付けなければ、それを使っても問題ありません。 もちろん、Jonのコメントは、他のものを好む理由をかなり釘付けにしています。





multithreading