java线程池:获取运行线程数并控制线程启动速度的方法
在java里,我们可以使用Executors.newFixedThreadPool来创建线程池,然后就可以不停的创建新任务,并用线程池来执行了。
在提交任务时,如果线程池已经被占满,任务会进到一个队列里等待执行。
这种机制在一些特定情况下会有些问题。今天我就遇到一种情况:创建线程比线程执行的速度要快的多,而且单个线程占用的内存又多,所以很快内存就爆了。
想了一个办法,就是在提交任务之前,先检查目前正在执行的线程数目,只有没把线程池占满的时候在去提交任务。
代码很简单:
intthreadCount=((ThreadPoolExecutor)executor).getActiveCount();
//System.out.println("running:"+threadCount);
while(threadCount==POOL_SIZE){
TimeUnit.MILLISECONDS.sleep(1);
threadCount=((ThreadPoolExecutor)executor).getActiveCount();
//System.out.println("running:"+threadCount);
}
executor.execute
以上这篇java线程池:获取运行线程数并控制线程启动速度的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
热门推荐
10 忌日祝福语简短10字
11 女儿高考结束祝福语简短
12 优美的春节祝福语简短
13 医务科新年祝福语简短
14 英文节日祝福语简短唯美
15 简短他人的生日祝福语
16 朋友升迁的祝福语简短
17 伴郎红包祝福语朋友简短
18 小年对儿子祝福语简短