当前有个解析excel的逻辑功能,考虑到数据量大时,打算将数据分为若干份,多线程处理,并使用countDownLatch等待所有线程处理结束后继续后续操作。
然而,过程总不会一帆风顺,我打了个趔趄,说起来挺蠢的。
excel处理的主线程采用@Async共用一个线程池,这个线程池的coreSize为2
数据处理的部分的线程池开始使用了同一个线程池,呵呵呵呵
当同时两个请求进入时,countDownLatch之前丢入线程池多线程处理数据,but,coreSize为2,so,进入队列等待,主线程在await,线程池无空闲线程可用,形成了一种等待的局面,卡死了
解决方案就是 逻辑处理部分塞入一个新的线程池,bingo。