@Override protected void poisonAll() { int size = currentPoolSize; final Queue<Runnable> q = getQueue(); while (size-- > 0) { q.offer(poison); } }
onTaskQueued(task); } else { onTaskQueueOverflow(); assert false; // should not reach this point startWorker(new SyncThreadWorker(isCore)); onMaxNumberOfThreadsReached();
/** * 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 SyncThreadPool(ThreadPoolConfig config) { super(config); if (config.getKeepAliveTime(TimeUnit.MILLISECONDS) < 0) { throw new IllegalArgumentException("keepAliveTime < 0"); } workQueue = config.getQueue() != null ? config.getQueue() : config.setQueue(new LinkedList<Runnable>()).getQueue(); this.maxQueuedTasks = config.getQueueLimit(); final int corePoolSize = config.getCorePoolSize(); while (currentPoolSize < corePoolSize) { startWorker(new SyncThreadWorker(true)); } ProbeNotifier.notifyThreadPoolStarted(this); }
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 SyncThreadPool(ThreadPoolConfig config) { super(config); if (config.getKeepAliveTime(TimeUnit.MILLISECONDS) < 0) { throw new IllegalArgumentException("keepAliveTime < 0"); } workQueue = config.getQueue() != null ? config.getQueue() : config.setQueue(new LinkedList<Runnable>()).getQueue(); this.maxQueuedTasks = config.getQueueLimit(); final int corePoolSize = config.getCorePoolSize(); while (currentPoolSize < corePoolSize) { startWorker(new SyncThreadWorker(true)); } ProbeNotifier.notifyThreadPoolStarted(this); }
onTaskQueued(task); } else { onTaskQueueOverflow(); assert false; // should not reach this point startWorker(new SyncThreadWorker(isCore)); 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; }
@Override protected void poisonAll() { int size = currentPoolSize; final Queue<Runnable> q = getQueue(); while (size-- > 0) { q.offer(poison); } }
/** * */ public SyncThreadPool(ThreadPoolConfig config) { super(config); if (config.getKeepAliveTime(TimeUnit.MILLISECONDS) < 0) { throw new IllegalArgumentException("keepAliveTime < 0"); } workQueue = config.getQueue() != null ? config.getQueue() : config.setQueue(new LinkedList<Runnable>()).getQueue(); this.maxQueuedTasks = config.getQueueLimit(); final int corePoolSize = config.getCorePoolSize(); while (currentPoolSize < corePoolSize) { startWorker(new SyncThreadWorker(true)); } ProbeNotifier.notifyThreadPoolStarted(this); }
onTaskQueued(task); } else { onTaskQueueOverflow(); assert false; // should not reach this point startWorker(new SyncThreadWorker(isCore)); 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; }
@Override protected void poisonAll() { int size = currentPoolSize; final Queue<Runnable> q = getQueue(); while (size-- > 0) { q.offer(poison); } }
/** * */ public SyncThreadPool(ThreadPoolConfig config) { super(config); if (config.getKeepAliveTime(TimeUnit.MILLISECONDS) < 0) { throw new IllegalArgumentException("keepAliveTime < 0"); } workQueue = config.getQueue() != null ? config.getQueue() : config.setQueue(new LinkedList<Runnable>()).getQueue(); this.maxQueuedTasks = config.getQueueLimit(); final int corePoolSize = config.getCorePoolSize(); while (currentPoolSize < corePoolSize) { startWorker(new SyncThreadWorker(true)); } ProbeNotifier.notifyThreadPoolStarted(this); }
onTaskQueued(task); } else { onTaskQueueOverflow(); assert false; // should not reach this point startWorker(new SyncThreadWorker(isCore)); 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; }
@Override protected void poisonAll() { int size = currentPoolSize; final Queue<Runnable> q = getQueue(); while (size-- > 0) { q.offer(poison); } }
/** * */ public SyncThreadPool(ThreadPoolConfig config) { super(config); if (config.getKeepAliveTime(TimeUnit.MILLISECONDS) < 0) { throw new IllegalArgumentException("keepAliveTime < 0"); } workQueue = config.getQueue() != null ? config.getQueue() : config.setQueue(new LinkedList<Runnable>()).getQueue(); this.maxQueuedTasks = config.getQueueLimit(); final int corePoolSize = config.getCorePoolSize(); while (currentPoolSize < corePoolSize) { startWorker(new SyncThreadWorker(true)); } ProbeNotifier.notifyThreadPoolStarted(this); }
onTaskQueued(task); } else { onTaskQueueOverflow(); assert false; // should not reach this point startWorker(new SyncThreadWorker(isCore)); 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; }