私はcallableを使用してfinallyブロックで囲まれたいくつかの入力ストリームを開きます。これは、いくつかの厄介な理由で、気にしない理由で時期尚早のeof例外をスローしています。呼び出し可能オブジェクトに一定の時間を与え、終了していない場合は停止します。しかし、呼び出し可能オブジェクト内のfinallyブロック内のものをどのようにシャットオフするのですか?たとえば、次のコードでは、finallyブロック印刷「e」は実行されません。
ExecutorService e = Executors.newSingleThreadExecutor();
Future<Integer> f = e.submit(new Callable<Integer>() {
public Integer call() {
try {
int i = 0;
while(i<1) {
}
} finally {
System.out.println("e");
}
return 4;
}
});
try {
Integer i = f.get(2, TimeUnit.SECONDS);
} catch(Exception ef) {
System.out.println("l");
}