Java笔记_解决ScheduledThreadPoolExecutor执行没反应的问题

今天遇到ScheduledThreadPoolExecutor任务调度线程池的一个大坑, 那就是如果启动的延迟执行线程(包括定频率或定延迟)里面有运行时异常抛出没有自己catch捕获时你会发现运行没有反应但是又没有报错的情况, 下面我写一个简单的例子大家就明白了.

运行如下图:

当过了1秒线程执行之后:

大家会发现控制台什么都没有, 我明明有抛异常啊.

 

如果我们自己手动显示的捕获异常呢:

运行如下:

大家会发现控制台打印异常了.

 

结论: 建议大家写任务调度线程池的线程代码时使用异常最高父类Throwable进行捕获, 将整段代码包含在内以免出现问题又不显示而头大的问题.

 

 

大家可能会奇怪这里为什么要用Throwable, 用Exception不行么, 因为Throwable下面有两个子类: Exception和Error,

使用Throwable即便是Error异常都可以捕获.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值