私は、スケジュールで実行され、RFC呼び出しを介して外部ソースからいくつかのデータをフェッチします。 RFCコールはスレッド化され、60秒後にキャンセルされます。これは私がそれを行う方法です。私は、外部RFCコールが立ち往生になったとfuture.cancel(真)は、スレッドの実行を中断することができませんでした状況、accross来るまでJava - TimeoutExceptionの後のスレッドの適切なキャンセルの実行
Future<String> future = executor.submit(new MyCallable());
try {
future.get(60, TimeUnit.SECONDS);
} catch (TimeoutException e) {
future.cancel(true);
}
これは長い時間のために働いていました。私のJavaプログラムは決して終了せず、外部システム内の対応するプロセスを手動でキャンセルするまで実行を続けました。
私の質問は今、どんな状況でコードを終了させることができますか?私はスレッドを停止することは価値が下がることに気付きました。
これはいいですか?
try {
future.get(60, TimeUnit.SECONDS);
} catch (TimeoutException e) {
future.cancel(true);
if(!future.isDone()){
System.exit(1);
}
}
ありがとうございました。
乾杯、Jooo