我正在使用callable打开一些封装在finally块中的输入流,对于某些令人讨厌的原因,由于我不在乎的原因而抛出过早的异常。我想给callable一定的时间,然后关闭它,如果它没有完成。但我怎么也关闭可调用内部finally块内的东西? 例如,在下面的代码中,finally块打印“e”永远不会被执行。if callable throws timeoutexception java with streams open
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");
}
什么是'封装在[a] finally block'中的输入流?你为什么不关心早熟的EOF? “关闭finally块内的东西”是什么意思?你的例子与你的问题有什么关系?这一切都不清楚。 – EJP 2012-04-18 22:11:21
我有inputstreams打开内部可调用。我希望他们在关闭的时候,如果可调用时间过去了,我希望执行程序服务来做到这一点。 – 2012-04-18 23:51:48