@Override public final void setMaximumPoolSize(int maximumPoolSize) { if (maximumPoolSize < 1) { throw new IllegalStateException("maximumPoolSize < 1"); } synchronized (statelock) { if (running) { this.maxPoolSize = maximumPoolSize; int toAdd = maximumPoolSize - expectedWorkerCount; while (toAdd > 0) { toAdd--; doStartWorker(); } while (toAdd++ < 0) { workQueue.add(poison); expectedWorkerCount--; } super.onMaxNumberOfThreadsReached(); } } }
/** * * @param name * @param poolsize * @param workQueue * @param threadfactory * @param probe */ public FixedThreadPool(String name, int poolsize, BlockingQueue<Runnable> workQueue, ThreadFactory threadfactory, ThreadPoolMonitoringProbe probe) { super(probe, name, threadfactory,poolsize); this.workQueue = workQueue != null ? workQueue : DataStructures.getLTQinstance(Runnable.class); synchronized (statelock) { while (poolsize-- > 0) { doStartWorker(); } } super.onMaxNumberOfThreadsReached(); }