您是正确的,在这种情况下,不会在两个线程之间传递中断标志(这是出于任何原因设计内置ExecutorService的方式)。如果希望主线程看到可调用对象的中断状态,则必须从调用方法中抛出InterruptedException。
class MyCallable implements Callable<String> { @Override public String call() { // ... if(Thread.currentThread().isInterrupted()) { throw new InterruptedException(); } return "blah"; }}
注意,
Future.get()在这种情况下,您仍然不会直接从InterruptedException中获取。由于它是由可调用对象抛出的,因此它将被包装在中
ExecutionException(这样您就可以区分可调用对象的中断和主线程的中断)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)