在运行时更改Java中的Pooling连接管理器中的线程数

时间:2012-02-28 17:54:29

标签: java multithreading threadpool

我正在尝试实现一个使用ThreadSafeClientConnManager的项目,其中20个作为池中的最大线程。现在,根据流量,我想在运行时更改线程数。有可能吗?

我有一个可行的解决方案是,我有一组新的线程池,我在更改最大连接时初始化,然后替换现有的连接。一种缓冲开关。但我不确定这是否是最佳解决方案。

1 个答案:

答案 0 :(得分:2)

我假设你现在正在使用Executors.newFixedThreadPool。不幸的是,这个池无法动态调整大小。

自适应的更好的解决方案是Executors.newCachedThreadPool。看看javadoc

  

执行调用将重用以前构造的线程if   可用。如果没有可用的现有线程,则会有新线程   创建并添加到池中。未使用的线程   六十秒被终止并从缓存中删除。