我正在使用可调用来打开包含在 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");
}