java线程池:获取运行线程数并控制线程启动速度的方法
2017-05-27 08:57
886 查看
在java里, 我们可以使用Executors.newFixedThreadPool 来创建线程池, 然后就可以不停的创建新任务,并用线程池来执行了。
在提交任务时,如果线程池已经被占满,任务会进到一个队列里等待执行。
这种机制在一些特定情况下会有些问题。今天我就遇到一种情况:创建线程比线程执行的速度要快的多,而且单个线程占用的内存又多,所以很快内存就爆了。
想了一个办法,就是在提交任务之前,先检查目前正在执行的线程数目,只有没把线程池占满的时候在去提交任务。
代码很简单:
int threadCount = ((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线程池:获取运行线程数并控制线程启动速度的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- question:applet与浏览器通信,同页面内applet之间通信,jsp控制applet异步运行,servlet启动applet方法 jsp获取applet返回值
- 运行iis提示服务没有及时响应启动或控制请求的解决方法
- C#中关于线程启动运行带多参数方法的操作
- MVC3"不允许启动新事务,因为有其他线程正在该会话中运行"错误解决方法
- 加快Wind7系统的启动速度、运行速度的方法
- SE高阶(4):多线程(并发)—①创建启动方式和控制线程方法
- asp.net MVC + linq to entity报"不允许启动新事务,因为有其他线程正在该会话中运行."错误解决方法
- java线程控制,当stop按钮就停止,当start按钮就开始运行,当按stop时程序又停止的实现方法
- day10 反射创建数组 线程的基本概念 线程的编写和启动方式 线程的运行状态以及状态转换方法 线程的调度和优先级设置
- 优化 Android Studio 启动、编译、运行速度的方法
- 一种控制线程运行和停止的方法
- Eclipse 启动运行速度调优
- 提高系统运行速度的几种方法
- iis服务没有及时响应启动或控制请求错误产生原因及解决方法
- Java:使用匿名内部类在方法内部定义并启动线程
- 优化Linux系统资源和加快启动速度的方法
- 获取java线程中信息的两种方法
- 电脑运行速度慢的各种原因及解决方法
- C#作Windows服务获取运行目录的方法
- 提高SQL SERVER运行速度的方法