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

我希望线程池里面的线程能够在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之间浮动,但是队列不能存储数据。


我该怎样设定参数,达到目的呢?


ABOUTYOU
浏览 923回答 2
2回答

慕斯709654

这样写不行吗?ThreadPoolExecutor tExecutor = new ThreadPoolExecutor(4, 16, 60L, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(256));tExecutor.allowCoreThreadTimeOut(false);coreThreadTimeOut一定要是false的,你第一种是true肯定不行,空闲的core thread会被干掉
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java