特定の数のスレッドで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);
できます。理想的なスレッド数と最大スレッド数を同じにしたいのに、なぜ機能しないのでしょうか。