Java: LockSupport.parkNanos と Thread.sleep(...) 質問する

Java: LockSupport.parkNanos と Thread.sleep(...) 質問する

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

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

それが正しいか間違っているかは、一部のテスト ハーネスでのみ許容されるものであり、これは私の主張ではありません。私の主張は、同じコードを次のように簡潔に記述できるということです。

  LockSupport.parkNanos(2000* 1000000);

どちらか一方のアプローチを優先すべき理由はあるでしょうか。

ベストアンサー1

メソッドのドキュメントには、parkNanosメソッドが返される条件が記載されています。その条件の 1 つは次のとおりです。呼び出しが不当に(つまり、理由もなく)返されるしたがって、基本的に、不必要なウェイクアップや他のスレッドが待機中のスレッドを「アンパーク」することを気にしないのであれば、それを使用しても問題ありません。そしてもちろん、Jon のコメントは、どちらか一方を他方よりも優先する理由をほぼ的確に説明しています。

おすすめ記事