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
  • asp之家 软件编程 m.aspxhome.com