2021
07-17
07-17
Java多线程导致CPU占用100%解决及线程池正确关闭方式
简介情景:1000万表数据导入内存数据库,按分页大小10000查询,多线程,15条线程跑。使用了ExecutorServiceexecutor=Executors.newFixedThreadPool(15)本地跑了一段时间后,发现电脑CPU逐渐升高,最后CPU占用100%卡死,内存使用也高达80%。排查问题Debug发现虽然创建了定长15的线程池,但是因为数据量大,在For中循环分页查询的List会持续加入LinkedBlockingQueue()队列中每一个等待的任务,又加载了1万的数据。所以不管是线程...
继续阅读 >