SEPExecutor(SharedExecutorPool pool, int maxWorkers, int maxTasksQueued) { this.pool = pool; this.maxWorkers = maxWorkers; this.maxTasksQueued = maxTasksQueued; this.permits.set(combine(0, maxWorkers)); }
SEPExecutor(SharedExecutorPool pool, int maxWorkers, int maxTasksQueued, String jmxPath, String name) { this.pool = pool; this.name = name; this.maxWorkers = maxWorkers; this.maxTasksQueued = maxTasksQueued; this.permits.set(combine(0, maxWorkers)); this.metrics = new SEPMetrics(this, jmxPath, name); }
SEPExecutor(SharedExecutorPool pool, int maxWorkers, int maxTasksQueued, String jmxPath, String name) { this.pool = pool; this.name = name; this.maxWorkers = maxWorkers; this.maxTasksQueued = maxTasksQueued; this.permits.set(combine(0, maxWorkers)); this.metrics = new SEPMetrics(this, jmxPath, name); }
SEPExecutor(SharedExecutorPool pool, int maxWorkers, int maxTasksQueued, String jmxPath, String name) { this.pool = pool; this.name = name; this.maxWorkers = maxWorkers; this.maxTasksQueued = maxTasksQueued; this.permits.set(combine(0, maxWorkers)); this.metrics = new SEPMetrics(this, jmxPath, name); }
boolean takeWorkPermit(boolean takeTaskPermit) { int taskDelta = takeTaskPermit ? 1 : 0; while (true) { long current = permits.get(); int workPermits = workPermits(current); int taskPermits = taskPermits(current); if (workPermits == 0 || taskPermits == 0) return false; if (permits.compareAndSet(current, combine(taskPermits - taskDelta, workPermits - 1))) { if (takeTaskPermit && taskPermits == maxTasksQueued && hasRoom.hasWaiters()) hasRoom.signalAll(); return true; } } }
boolean takeWorkPermit(boolean takeTaskPermit) { int taskDelta = takeTaskPermit ? 1 : 0; while (true) { long current = permits.get(); int workPermits = workPermits(current); int taskPermits = taskPermits(current); if (workPermits == 0 || taskPermits == 0) return false; if (permits.compareAndSet(current, combine(taskPermits - taskDelta, workPermits - 1))) { if (takeTaskPermit && taskPermits == maxTasksQueued && hasRoom.hasWaiters()) hasRoom.signalAll(); return true; } } }
boolean takeWorkPermit(boolean takeTaskPermit) { int taskDelta = takeTaskPermit ? 1 : 0; while (true) { long current = permits.get(); int workPermits = workPermits(current); int taskPermits = taskPermits(current); if (workPermits == 0 || taskPermits == 0) return false; if (permits.compareAndSet(current, combine(taskPermits - taskDelta, workPermits - 1))) { if (takeTaskPermit && taskPermits == maxTasksQueued && hasRoom.hasWaiters()) hasRoom.signalAll(); return true; } } }
boolean takeWorkPermit(boolean takeTaskPermit) { int taskDelta = takeTaskPermit ? 1 : 0; while (true) { long current = permits.get(); int workPermits = workPermits(current); int taskPermits = taskPermits(current); if (workPermits == 0 || taskPermits == 0) return false; if (permits.compareAndSet(current, combine(taskPermits - taskDelta, workPermits - 1))) { if (takeTaskPermit && taskPermits == maxTasksQueued && hasRoom.hasWaiters()) hasRoom.signalAll(); return true; } } }