我希望线程池里面的线程能够在4 - 16之间浮动,队列容量为256。我写了下面这样的代码:ThreadPoolExecutor tExecutor = new ThreadPoolExecutor(16, 16, 60L, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(256));tExecutor.allowCoreThreadTimeOut(true);其他条件都符合要求,但是这里只能在0 - 16之间浮动。如果这样写:ThreadPoolExecutor tExecutor = new ThreadPoolExecutor(4, 16, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); tExecutor.allowCoreThreadTimeOut(false);可以在4 - 16之间浮动,但是队列不能存储数据。我该怎样设定参数,达到目的呢?
2 回答
慕斯709654
TA贡献1840条经验 获得超5个赞
这样写不行吗?
ThreadPoolExecutor tExecutor = new ThreadPoolExecutor(4, 16, 60L, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(256));
tExecutor.allowCoreThreadTimeOut(false);
coreThreadTimeOut一定要是false的,你第一种是true肯定不行,空闲的core thread会被干掉
添加回答
举报
0/150
提交
取消