原文连接:https://www.cnblogs.com/buptl/p/6910363.html
感谢博主,解决了我的问题,担心以后找不到,所在复制了一份。
在java里, 我们可以使用Executors.newFixedThreadPool 来创建线程池, 然后就可以不停的创建新任务,并用线程池来执行了。
在提交任务时,如果线程池已经被占满,任务会进到一个队列里等待执行。
这种机制在一些特定情况下会有些问题。今天我就遇到一种情况:创建线程比线程执行的速度要快的多,而且单个线程占用的内存又多,所以很快内存就爆了。
想了一个办法,就是在提交任务之前,先检查目前正在执行的线程数目,只有没把线程池占满的时候在去提交任务。
int threadCount = ((ThreadPoolExecutor)executor).getActiveCount();
while (threadCount

本文介绍了如何使用Java的`Executors.newFixedThreadPool`创建线程池,以及在提交任务前检查线程池运行线程数以防止因任务提交过快导致内存爆满的问题。通过限制线程启动速度,可以有效控制内存消耗。
最低0.47元/天 解锁文章
170万+

被折叠的 条评论
为什么被折叠?



