在一些List处理场景中,为了加速处理,一般使用CountDownLatch+threadPoolExecutor实现并发处理。
但线程池处理中,可能出现未知异常,导致CountDownLatch减1缺少,进一步导致await一直阻塞等待。这种情况,就需要合理设置await的超时等待时间,避免请求一直阻塞等待,影响到其他。
当然,也可以不设置await的超时等待时间,但是需要保证线程执行正常或不正常结束,CountDownLatch一定会减1。
建议两方面都考虑,既处理线程正常或不正常结束的CountDownLatch减1,又设置await合适的时间。
本文提供一个demo,仅供参考。
more >>