計算をしたいのですが、時間がかかりすぎた場合(たとえば10秒)、停止して現在の最良の結果を表示したいと思います。
Javaでそれを行う準備ができていますか? すべての関数で時間チェックを書きたくありません。
提案どおりに使用するTimer
か、複数のスレッドに進みます。メイン プログラムで、計算を行う別のスレッドが開始されます。メイン スレッドはスリープ状態にThread.sleep
なり、タイムアウト後に計算を終了します。
main thread +-------+---sleeping---termination----+
| |
another thread +---calculation---+
計算スレッドの開始時に開始できる別のスレッドを作成し、Timer.sleep(int) メソッドで 10 秒後にブール値を true に設定できます。次に、計算スレッドで、if(finished) break;
毎秒値をインクリメントし、10 秒で終了するループを持つ別のスレッドを用意します。
public class counter extends Thread, implements Runnable{
public void run()
{
for(int index=0; index<10; index++)//Waits ten seconds
{
this.sleep(1000);//ms
}
System.exit(0);//Closes the application
}
ただし、メイン スレッドは引き続き実行できます。シャットダウンをキャンセルするには、入力が時間内に受信された場合に true に設定される揮発性ブール値を持つことができると思います。