私は次のことを含む方法を持っているいくつかのJavaコードに出くわした:これの目的であるかもしれない何スレッドが中断したかどうかを確認するためにスリープするのはどうですか?
static boolean waitForSeconds(long seconds) { try { Thread.sleep(seconds * 1000); } catch (InterruptedException ex) { return false; } return true; }
?戻り値は、計算を続行するかどうかを決定するために使用されます。スレッドがその秒間に中断されたかどうかをチェックする唯一の目的のために1秒間スリープしようとするのは奇妙に思えます。
このメソッドを呼び出すコードは、thread.isInterrupted()と同じことを達成しようとしていますか?それが何をしようとしていても、よりよい方法はありますか?
waitForSecondsの呼び出しは、ループ内ではなく別のメソッドの先頭に表示されるため、このコードが割り込みのチェックに加えて何らかの目的で秒を待つことを意図している場合、間違った場所をチェックする。ループの近くで睡眠をとる方が良いのではないでしょうか?それは何をしているのかがはっきりしていますか?
最後の質問の場合は、代わりにこちらをご返信ください:
Is it clearer to sleep near a function call in a loop or in the function call itself?