@Override public void shutdown() { if (shutdown.compareAndSet(false, true)) { externalQueue.add(new Runnable() { @Override public void run() { terminated.set(true); terminatedLatch.countDown(); } }); triggerDrain(); } }
@Override public void shutdown() { if (shutdown.compareAndSet(false, true)) { externalQueue.add(new Runnable() { @Override public void run() { terminated.set(true); terminatedLatch.countDown(); } }); triggerDrain(); } }
/** * Queues the runnable for execution. * @param runnable */ @Override public void execute(Runnable runnable) { if (runnable == null) throw new NullPointerException("runnable cannot be null"); if (shutdown.get()) throw new RejectedExecutionException("shutdown"); if (isDraining()) { localQueue.add(runnable); } else { externalQueue.add(runnable); triggerDrain(); } }
/** * Queues the runnable for execution. * @param runnable */ @Override public void execute(Runnable runnable) { if (runnable == null) throw new NullPointerException("runnable cannot be null"); if (shutdown.get()) throw new RejectedExecutionException("shutdown"); if (isDraining()) { localQueue.add(runnable); } else { externalQueue.add(runnable); triggerDrain(); } }
triggered.set(false); if (!externalQueue.isEmpty()) { triggerDrain();
triggered.set(false); if (!externalQueue.isEmpty()) { triggerDrain();