2012-04-09 15 views
1

私は計算をしたいが、時間がかかりすぎると(例えば10秒)、現在の最良の結果を表示したい。しばらくしてからアプリケーションを停止する

これはJavaで実行する準備ができていますか?私はすべての機能にタイムチェックを書いてはいけません。

+0

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Timer.htmlこれはまったく役に立ちますか? – MarioDS

+0

*「私は欲しくない」*なぜあなたは何をしたいのですか?それは重要なことです。あなたの質問に注意を払うより良い理由を考え出すことができますか? –

答えて

2

Timerを推奨または複数のスレッドに使用してください。あなたのメインプログラムでは、計算を伴う別のスレッドが開始されます。メインスレッドはThread.sleepでスリープし、タイムアウト後に計算を終了します。

main thread +-------+---sleeping---termination----+ 
        |     | 
another thread  +---calculation---+ 
+0

このようにすると、計算には常に10秒かかります。それは非常に非効率的です。 –

+0

あなたはそうです。あなたが計算を完了した後にスリーピングスレッドに計算を割り込ませない限り。 – phineas

-1

毎秒値を増分して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に設定されると考えられます。

+0

このコードがソリューションにどのように貢献しているかは非常に不明です。さらに 'Thread' **を拡張するか、** Runnableを実装するだけで十分です。 – phineas

1

は、あなたは、あなたの計算スレッドの初めに開始することができます別のスレッドを作成し、Timer.sleep(int)メソッドと10秒後に、trueにブール値を設定することができます。計算スレッドでは、if(finished) break;

関連する問題