我正在尝试实现一个使用ThreadSafeClientConnManager
的项目,其中20个作为池中的最大线程。现在,根据流量,我想在运行时更改线程数。有可能吗?
我有一个可行的解决方案是,我有一组新的线程池,我在更改最大连接时初始化,然后替换现有的连接。一种缓冲开关。但我不确定这是否是最佳解决方案。
答案 0 :(得分:2)
我假设你现在正在使用Executors.newFixedThreadPool
。不幸的是,这个池无法动态调整大小。
自适应的更好的解决方案是Executors.newCachedThreadPool
。看看javadoc。
执行调用将重用以前构造的线程if 可用。如果没有可用的现有线程,则会有新线程 创建并添加到池中。未使用的线程 六十秒被终止并从缓存中删除。