今天小编给大家分享一下ScheduledThreadPoolExecutor的坑如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。先看下面案例代码案例代码逻辑很简单,主线程等待5秒后关闭线程池,定时任务执行三次后模拟抛出RuntimeException
但是我们看看执行结果,只执行了三次!因为某种情况下,定时任务在执行第四次时出现异常,从而导致任务调度被取消,不会继续执行而且,异常信息也没有对外抛出!那么咋解决嘞?try-catch就行了呗~可以看到执行结果,虽然执行异常,但是任务却还是一直在调度~代码里使用工具类对Runnable任务包了一层,就是加了try-catch直接进入scheduleAtFixedRate
源码查看因为我们提交的任务被封装在ScheduledFutureTask
,所以我们直接来看ScheduledFutureTask
的run
方法我们是周期性任务,所以直接看runAndReset
源码通过上面源码,我们可以很清楚的了解到,就是因为任务执行异常,且没有被try-catch,所以导致任务没有被再次加入到队列中进行调度。并且通过文章开头,我们还能看到任务执行异常,免费云主机域名但是却没有抛出异常信息那是因为异常被封装了,只有调用get方法时,才会抛出异常以上就是“ScheduledThreadPoolExecutor的坑如何解决”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。
这篇文章主要介绍了在SQL中修改数据的基础语句有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇在SQL中修改数据的基础语句有哪些文章都会有所收获,下面我们一起来看看吧。在SQL中的基本操作就是增删改查,查询语句不会对数据库中的…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。