2016-04-15 9 views
1

私は堤防が埋め込まれた瓶を使います。時には、1つのリクエストが何らかの無限ループに陥ることがあります。明らかに無限ループを固定することが最良の選択肢になるでしょう。しかし、これは現在不可能です。埋め込まれた桟橋、一定時間後にリクエストを殺す

私はオプションを探しています。リクエストが存在するかどうかを確認します。 5分、対応するスレッドを強制終了します。

私は典型的な桟橋のオプションを試してみました:予想通り、それらの

  • MaxIdleTimeエレメン
  • soLingerTime
  • stopTimeout

どれも働きました。考慮すべき別の選択肢がありますか?

答えて

1

完了までに時間がかかりすぎるコードを実行するコードにアクセスできますか?あなたがコール可能でExecutorを使用してこれを実現することができる場合は、以下のユニットテストを例に挙げてください:

@Test 
public void timerTest() throws Exception 
{ 
    //create an executor 
    ExecutorService executor = Executors.newFixedThreadPool(10); 

    //some code to run 
    Callable callable =() -> { 
    Thread.sleep(10000); //sleep for 10 seconds 
    return 123; 
    }; 

    //run the callable code 
    Future<Integer> future = (Future<Integer>) executor.submit(callable); 

    Integer value = future.get(5000, TimeUnit.MILLISECONDS); //this will timeout after 5 seconds 

    //kill the thread 
    future.cancel(true); 

} 
+0

ありがとうございました。未来を使うことは良い考えです。私は桟橋側の解決策を望んでいた。桟橋はスレッド処理もしているので。 – Robin

関連する問題