我正在尝试创建具有一定数量线程的 ThreadPoolExecutor,但同时,我想控制池队列的大小。所以我使用完整的构造函数创建了执行器:
BlockingQueue<Runnable> pq =
new ArrayBlockingQueue<Runnable>(MAX_THREADPOOL_SIZE);
ThreadPoolExecutor threadPoolExecutor =
new ThreadPoolExecutor(threadSize, threadSize, THREAD_IDLE_WAIT,
TimeUnit.SECONDS, pq);
但是,这给了我一个IllegalArgumentException
. 如果我将构造函数更改为
new ThreadPoolExecutor(threadSize, **threadSize+1**, THREAD_IDLE_WAIT,
TimeUnit.SECONDS, pq);
有用。如果我希望理想的线程数和最大线程数相同,为什么它不起作用。