@Override protected final void beforeExecute(final Worker worker, final Thread t, final Runnable r) { super.beforeExecute(worker, t, r); queuePermits.release(); } }
@Override public void execute(Runnable command) { if (running) { if (workQueue.offer(command)) { // doublecheck the pool is still running if (!running && workQueue.remove(command)) { throw new RejectedExecutionException("ThreadPool is not running"); } onTaskQueued(command); return; } onTaskQueueOverflow(); return; } throw new RejectedExecutionException("ThreadPool is not running"); }
/** * Must hold statelock while calling this method. */ private void doStartWorker() { startWorker(new BasicWorker()); }
/** * Added for http://java.net/jira/browse/GRIZZLY-1435. * @throws Exception */ @Test public void testThreadPoolCoreThreadInitialization() throws Exception { final ThreadPoolConfig config = ThreadPoolConfig.defaultConfig(); config.setCorePoolSize(5); config.setMaxPoolSize(5); Field workers = AbstractThreadPool.class.getDeclaredField("workers"); workers.setAccessible(true); final SyncThreadPool syncThreadPool = new SyncThreadPool(config); assertEquals("Pool did not properly initialize threads based on core pool size configuration.", 5, ((Map) workers.get(syncThreadPool)).size()); config.setQueue(new ArrayBlockingQueue<Runnable>(5)); final FixedThreadPool fixedThreadPool = new FixedThreadPool(config); assertEquals("Pool did not properly initialize threads based on core pool size configuration.", 5, ((Map) workers.get(fixedThreadPool)).size()); }
public FixedThreadPool(ThreadPoolConfig config) { super(config); this.workQueue = config.getQueue() != null ? (BlockingQueue<Runnable>) config.getQueue() : (BlockingQueue<Runnable>) config.setQueue( DataStructures.getLTQInstance(Runnable.class)).getQueue(); int poolSize = config.getMaxPoolSize(); synchronized (stateLock) { while (poolSize-- > 0) { doStartWorker(); } } ProbeNotifier.notifyThreadPoolStarted(this); super.onMaxNumberOfThreadsReached(); }
protected final void setImpl(ThreadPoolConfig cfg) { if (cfg == null) { throw new IllegalArgumentException("config is null"); } cfg = cfg.copy(); if (cfg.getMemoryManager() == null) { cfg.setMemoryManager(MemoryManager.DEFAULT_MEMORY_MANAGER); } final Queue<Runnable> queue = cfg.getQueue(); if ((queue == null || queue instanceof BlockingQueue) && (cfg.getCorePoolSize() < 0 || cfg.getCorePoolSize() == cfg.getMaxPoolSize())) { this.pool = cfg.getQueueLimit() < 0 ? new FixedThreadPool(cfg) : new QueueLimitedThreadPool(cfg); } else { this.pool = new SyncThreadPool(cfg); } this.config = cfg; }
public FixedThreadPool(ThreadPoolConfig config) { super(config); this.workQueue = config.getQueue() != null ? (BlockingQueue<Runnable>) config.getQueue() : (BlockingQueue<Runnable>) config.setQueue( new LinkedTransferQueue<>()).getQueue(); int poolSize = config.getMaxPoolSize(); synchronized (stateLock) { while (poolSize-- > 0) { doStartWorker(); } } ProbeNotifier.notifyThreadPoolStarted(this); super.onMaxNumberOfThreadsReached(); }
@Override public void execute(Runnable command) { if (running) { if (workQueue.offer(command)) { // doublecheck the pool is still running if (!running && workQueue.remove(command)) { throw new RejectedExecutionException("ThreadPool is not running"); } onTaskQueued(command); return; } onTaskQueueOverflow(); return; } throw new RejectedExecutionException("ThreadPool is not running"); }
protected final void setImpl(ThreadPoolConfig cfg) { if (cfg == null) { throw new IllegalArgumentException("config is null"); } cfg = cfg.copy(); if (cfg.getMemoryManager() == null) { cfg.setMemoryManager(MemoryManager.DEFAULT_MEMORY_MANAGER); } final Queue<Runnable> queue = cfg.getQueue(); if ((queue == null || queue instanceof BlockingQueue) && (cfg.getCorePoolSize() < 0 || cfg.getCorePoolSize() == cfg.getMaxPoolSize())) { this.pool = cfg.getQueueLimit() < 0 ? new FixedThreadPool(cfg) : new QueueLimitedThreadPool(cfg); } else { this.pool = new SyncThreadPool(cfg); } this.config = cfg; }
@Override protected final void beforeExecute(final Worker worker, final Thread t, final Runnable r) { super.beforeExecute(worker, t, r); queuePermits.release(); } }
/** * Must hold statelock while calling this method. */ private void doStartWorker() { startWorker(new BasicWorker()); }
public FixedThreadPool(ThreadPoolConfig config) { super(config); this.workQueue = config.getQueue() != null ? (BlockingQueue<Runnable>) config.getQueue() : (BlockingQueue<Runnable>) config.setQueue( new LinkedTransferQueue<>()).getQueue(); int poolSize = config.getMaxPoolSize(); synchronized (stateLock) { while (poolSize-- > 0) { doStartWorker(); } } ProbeNotifier.notifyThreadPoolStarted(this); super.onMaxNumberOfThreadsReached(); }
@Override public void execute(Runnable command) { if (running) { if (workQueue.offer(command)) { // doublecheck the pool is still running if (!running && workQueue.remove(command)) { throw new RejectedExecutionException("ThreadPool is not running"); } onTaskQueued(command); return; } onTaskQueueOverflow(); return; } throw new RejectedExecutionException("ThreadPool is not running"); }
protected final void setImpl(ThreadPoolConfig cfg) { if (cfg == null) { throw new IllegalArgumentException("config is null"); } cfg = cfg.copy(); if (cfg.getMemoryManager() == null) { cfg.setMemoryManager(MemoryManager.DEFAULT_MEMORY_MANAGER); } final Queue<Runnable> queue = cfg.getQueue(); if ((queue == null || queue instanceof BlockingQueue) && (cfg.getCorePoolSize() < 0 || cfg.getCorePoolSize() == cfg.getMaxPoolSize())) { this.pool = cfg.getQueueLimit() < 0 ? new FixedThreadPool(cfg) : new QueueLimitedThreadPool(cfg); } else { this.pool = new SyncThreadPool(cfg); } this.config = cfg; }
@Override protected final void beforeExecute(final Worker worker, final Thread t, final Runnable r) { super.beforeExecute(worker, t, r); queuePermits.release(); } }
/** * Must hold statelock while calling this method. */ private void doStartWorker() { startWorker(new BasicWorker()); }
public FixedThreadPool(ThreadPoolConfig config) { super(config); this.workQueue = config.getQueue() != null ? (BlockingQueue<Runnable>) config.getQueue() : (BlockingQueue<Runnable>) config.setQueue( new LinkedTransferQueue<>()).getQueue(); int poolSize = config.getMaxPoolSize(); synchronized (stateLock) { while (poolSize-- > 0) { doStartWorker(); } } ProbeNotifier.notifyThreadPoolStarted(this); super.onMaxNumberOfThreadsReached(); }
@Override public void execute(Runnable command) { if (running) { if (workQueue.offer(command)) { // doublecheck the pool is still running if (!running && workQueue.remove(command)) { throw new RejectedExecutionException("ThreadPool is not running"); } onTaskQueued(command); return; } onTaskQueueOverflow(); return; } throw new RejectedExecutionException("ThreadPool is not running"); }
protected final void setImpl(ThreadPoolConfig cfg) { if (cfg == null) { throw new IllegalArgumentException("config is null"); } cfg = cfg.copy(); if (cfg.getMemoryManager() == null) { cfg.setMemoryManager(MemoryManager.DEFAULT_MEMORY_MANAGER); } final Queue<Runnable> queue = cfg.getQueue(); if ((queue == null || queue instanceof BlockingQueue) && (cfg.getCorePoolSize() < 0 || cfg.getCorePoolSize() == cfg.getMaxPoolSize())) { this.pool = cfg.getQueueLimit() < 0 ? new FixedThreadPool(cfg) : new QueueLimitedThreadPool(cfg); } else { this.pool = new SyncThreadPool(cfg); } this.config = cfg; }
@Override protected final void beforeExecute(final Worker worker, final Thread t, final Runnable r) { super.beforeExecute(worker, t, r); queuePermits.release(); } }