为了账号安全,请及时绑定邮箱和手机立即绑定

Java的线程池,如何设定保留的最小线程数和固定的队列容量?

Java的线程池,如何设定保留的最小线程数和固定的队列容量?

ABOUTYOU 2019-03-13 18:19:24
我希望线程池里面的线程能够在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会被干掉


查看完整回答
反对 回复 2019-04-23
  • 2 回答
  • 0 关注
  • 922 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信