我使用的是FutureTask类,它在构造函数中接受一个Callable对象,并从他的run方法中调用call(),如下所示:
public void run() { //Thread
while(true) {
try {
FutureTask<String> task = taskQueue.take();
task.run(); //executing call() somehow
}
catch (InterruptedException e) {
System.out.println("Thread finishing from interrupt()...");
break; //I would like to break the loop if I receive the exception
}
}
}
我的通话实现是这样的:
@Override
public String call() throws InterruptedException {
Thread.sleep(taskTime);
//After calling interrupt() on this thread an InterruptedException is thrown
return "someString"; // this is not reached
}
但我认为run方法正在吞噬异常,因为我无法访问catch块。你有什么想法吗?
我调用thread.interrupt();
,线程是运行run()的线程。
要清除:当task.run()
正在运行时,它正在执行Thread.sleep(taskTime);
,它会正确抛出异常,但run()
方法似乎吞下它。
问题是:我有一个库类(我无法修改),它使一个对象运行一个可能引发异常的特定方法。这个库类就像一个包装器,它似乎吞下了异常而不是传播它。你会做什么?