是否有一个ExecutorService实现行为类似于具有以下特征的线程池?
相当标准的线程池行为.你认为ThreadPoolExecutor会处理这个,但是
executorService = new ThreadPoolExecutor(
2, 10, // min/max threads
60, TimeUnit.SECONDS, // time of inactivity before scaling back
new SynchronousQueue<Runnable>()); // task queue
Run Code Online (Sandbox Code Playgroud)
如果提交的任务超过10个,则会抛出异常.切换到a LinkedBlockingQueue将永远不会扩展到两个最小线程之外,除非你限制大小new LinkedBlockingQueue<Runnable>(20),在这种情况下,将有两个线程处理1-20个任务,2-10个线程处理21-30个任务,并且异常超过30个任务.不漂亮.同时,固定的线程池永远不会缩小非活动线程.
那么,为了得到我所追求的东西,我可以使用其他类型BlockingQueue或小提琴我错过的其他设置吗?是否有另一个ExceutorService更适合的实现(哪个?),或者我最好通过重写execute()方法来自己滚动ThreadPoolExecutor?