多级线程并发引起的死锁问题

任务描述

传入时间段,求出每一天的数据,每一天数据也也采用多线程加快进度

  1. T1:
    • T1A, T1B

异常

采用线程池方式来创建线程,使用单个线程池来处理所有父子任务,出现死锁

原因排查

放开线程池最大线程数量,死锁解除,表明是线程资源不足引起死锁,竞争线程资源会出现在父子线程之间,所以归纳最后的原因是父线程和其一部分子线程首先全部占用了全部线程资源,此时父线程在等待子线程结束,而子线程在等待父线程释放线程资源,出现循环依赖的情况。

解决方案

为避免对于线程资源的循环依赖,父子线程分别采用单独的线程池,问题解决

多级线程并发引起的死锁问题

上一篇:@selector(..)警告提示


下一篇:DayOfWeek