关于线程池运行过程中,业务逻辑出现未知异常导致线程中断问题反思
最近在项目研发中的关于线程池应用过程中由于业务逻辑异常导致的线程中断,但程序未中断导致的脏数据问题
话不多说,在最近最新的一个版本发布过程中,业务需要,我们要定期去给客户预留出可用的资源数据,提供客户使用,在版本即将上线前一周测试过程中,遇到的预留资源数据跟实际数据不匹配,刚开始反复检查代码,通过日志调试一直无果,经过不懈努力,最终终于发现是由于线程在跑业务时,抛出未知异常,当前线程中断,然而主程序并未异常,导致最终响应的数据与实际不符。下面我就简答举例说明下这个问题
1.获取资源数据demo
构造简答异常逻辑
在主程序中,可能会涉及到各种数据处理,导致我我们要对集合,数据,存储等进行各种操作,难免会存在异常场景不全的情况
对了这块说下,在循环块中如何规避对集合进行增删改所导致的问题,这边可以用迭代器进行处理
3.构造简单线程池对集合数据进行业务处理
4.执行结果