java线程池:获取运行线程数并控制线程启动速度的方法

网友投稿 293 2023-05-12


java线程池:获取运行线程数并控制线程启动速度的方法

在java里, 我们可以使用Executors.newFixedThreadPool 来创建线程池, 然后就可以不停的创建新任务,并用线程池来执行了。

在提交任务时,如果线程池已经被占满,任务会进到一个队列里等待执行。

这种机制在一些特定情况下会有些问题。今天我就遇到一种情况:创建线程比线程执行的速度要快的多,而且单个线程占用的内存又

多,所以很快内存就爆了。

想了一个办法,就是在提交任务之前,先检查目前正在执行的线程数目,只有没把线程池占满的时候在去提交任务。

代码很简单:

int threadCount = ((ThreadPoolExecutor)executor).getActiveCount();

// System.out.prineYlSkAeDitln("running : " + threadCount);

while (threadCount == POOL_SIZE) {

TimeUnit.MILLISECONDS.sleep(1);

threeYlSkAeDiadCount = ((ThreadPoolExecutor)executor).getActiveCount();

// System.out.println("running : " + threadCount);

}

executor.execute


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kotlin基础教程之函数定义与变量声明
下一篇:老生常谈Java动态编译(必看篇)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~