java菜单栏抛异常_处理来自Java ExecutorService任务的异常

我试图使用Java的ThreadPoolExecutor类运行大量的重量任务与固定数量的线程。每个任务有很多地方,由于异常它可能会失败。

我已经子类化ThreadPoolExecutor,我覆盖了“afterExecute”方法,应该提供任何未捕获的异常在运行任务时遇到。但是,我似乎不能使它的工作。

例如:

public class ThreadPoolErrors extends ThreadPoolExecutor {

public ThreadPoolErrors() {

super( 1, // core threads

1, // max threads

1, // timeout

TimeUnit.MINUTES, // timeout units

new LinkedBlockingQueue() // work queue

);

}

protected void afterExecute(Runnable r, Throwable t) {

super.afterExecute(r, t);

if(t != null) {

System.out.println("Got an error: " + t);

} else {

System.out.println("Everything's fine--situation normal!");

}

}

public static void main( String [] args) {

ThreadPoolErrors threadPool = new ThreadPoolErrors();

threadPool.submit(

new Runnable() {

public void run() {

throw new RuntimeException("Ouch! Got an error.");

}

}

);

threadPool.shutdown();

}

}

这个程序的输出是“一切都很好 – 情况正常!即使唯一提交到线程池的Runnable抛出异常。任何线索,这里发生了什么?

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值