为什么在Callable中设置中断位

为什么在Callable中设置中断位,第1张

为什么在Callable中设置中断

您是正确的,在这种情况下,不会在两个线程之间传递中断标志(这是出于任何原因设计内置ExecutorService的方式)。如果希望主线程看到可调用对象的中断状态,则必须从调用方法中抛出InterruptedException。

class MyCallable implements Callable<String> {  @Override  public String call() {    // ...    if(Thread.currentThread().isInterrupted()) {      throw new InterruptedException();    }    return "blah";  }}

注意,

Future.get()
在这种情况下,您仍然不会直接从InterruptedException中获取。由于它是由可调用对象抛出的,因此它将被包装在中
ExecutionException
(这样您就可以区分可调用对象的中断和主线程的中断)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5013792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存