首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中动态调整缓存线程池的大小

如何在java中动态调整缓存线程池的大小
EN

Stack Overflow用户
提问于 2015-03-25 16:36:18
回答 1查看 1.6K关注 0票数 3

目前,我正在使用期货进行异步线程处理。我希望它的功能类似于“cachedThreadPool”,但也要做以下两件事:

  1. 增加每次线程成功完成时允许的最大线程数。
  2. 减少当线程抛出异常或超时时允许的最大线程数。

在自定义ThreadPoolExecutor中可以这样做吗?我对用这种方式使用执行者很陌生,所以指出正确的方向对解决这个问题是非常有帮助的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-25 17:14:09

应该仔细考虑动态调整线程池的大小。如果您有超时,并且您的响应是减少线程数量,假设任务是可解析的,那么这可能会使问题更糟。

无论如何,下面的代码会在任务抛出异常时更改池的大小,如果任务成功完成,则会使其更大

代码语言:javascript
复制
class ManagedThreadPoolExecutor extends ThreadPoolExecutor {
      @Override
      protected void afterExecute(Runnable r, Throwable t) {
           if(t != null)
                setMaximumPoolSize(getMaximumPoolSize()-1);
           else
                setMaximumPoolSize(getMaximumPoolSize()+1);

      }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29261387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档