2012-04-02 8 views
0

まだ終了していなければ、しばらくしてからjavaのメソッドを強制終了する必要があります。これをwhileループで実装しました。しかし、関数実行さえしても、全体的に待ちます。Javaでメソッドが終了したとき、または特定の時間が経過した後(終了していなくても)

この時点で終了したら、ループを停止する必要があります。 どのような提案も素晴らしいでしょう。 HERE

import java.util.concurrent.* ; 

ExecutorService svc = Executors.newFixedThreadPool(1) ; 
svc.submit(new Runnable() { 
    public void run() { 
    myFunction(); 
    } 
}) ; 
svc.shutdown() ; 
svc.awaitTermination(300, TimeUnit.SECONDS) ; 

私はこのコードを試してみましたから編集

。それはうまくいった。しかし、時間の制約のためmyfunctionが終了したり終了したりすると、コードはしばらく停止しています。理由はわかりません:(

+3

、右? – tartar

+3

あなたは既に符号化何を見てみましょう。 – Java42

+0

んが、私は通常、それを実装していない。while(System.currentTimeMillis() < specificTIme) { \t hbsgsNoneObj.solve(); \t } Towhid

答えて

3

FutureTaskから関数を呼び出し、get(long、TimeUnit)メソッドを使用します。 TimeoutExceptionは、そうでなければ、関数の結果を取得し、それが終了する前にタイムアウトになったことを示します。スレッドと

関連する問題