java线程池:获取运行线程数并控制线程启动速度的方法
作者:jingxian 时间:2022-06-30 23:22:57
在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,线程数,线程
0
投稿
猜你喜欢
SpringBoot之导入静态资源详解
2021-06-22 05:01:30
Android编程实现图片放大缩小功能ZoomControls控件用法实例
2022-07-16 22:01:11
Java实现的上传并压缩图片功能【可等比例压缩或原尺寸压缩】
2023-03-17 11:09:11
解决使用mybatis-plus时,生成的SQL大写变小写加下划线问题
2022-10-20 09:24:47
横竖屏切换导致页面频繁重启screenLayout解析
2021-06-14 05:16:22
使用SpringBoot打jar包并部署到Tomcat详细步骤
2023-12-06 07:15:16
C#多线程处理多个队列数据的方法
2021-12-26 19:31:02
C语言实现生日贺卡
2023-03-04 18:12:05
C#集合遍历时删除和增加元素的方法
2021-12-11 18:53:24
判断java文件类型TikaToolKit的实例
2021-06-29 02:31:09
springboot项目访问静态资源的配置代码实例
2021-11-16 02:07:49
java 用itext设置pdf纸张大小操作
2022-10-09 15:00:43
android虚拟键盘弹出遮挡登陆按钮问题的解决方法
2022-03-06 15:54:54
C#将DataTable转换成list的方法
2023-03-06 01:20:45
SpringBoot使用Log4j过程详解
2023-05-03 22:44:12
Spring boot创建自定义starter的完整步骤
2023-05-08 08:08:53
Java 完美判断中文字符的方法
2023-01-07 19:14:54
Android GSYVideoPlayer视频播放器功能的实现
2022-01-12 23:57:08
总结的5个C#字符串操作方法分享
2022-08-10 04:02:01
C#实现跑马灯效果的示例代码
2022-06-10 07:12:40