@Override public void produce() { tryProduce(false); }
@Override public void run() { produce(); }
@Override public void run() { produce(); } }
private boolean doProduce(boolean nonBlocking) Runnable task = produceTask(); throw new IllegalStateException(toStringLocked()); throw new IllegalStateException(toString()); runTask(task); return true; invokeTask(task); return true; execute(task); return true; runTask(task); throw new IllegalStateException(toString());
private void getState(StringBuilder builder) { builder.append(_state); builder.append("/p="); builder.append(_pending); builder.append('/'); builder.append(_tryExecutor); builder.append("[pc="); builder.append(getPCTasksConsumed()); builder.append(",pic="); builder.append(getPICTasksExecuted()); builder.append(",pec="); builder.append(getPECTasksExecuted()); builder.append(",epc="); builder.append(getEPCTasksConsumed()); builder.append("]"); builder.append("@"); builder.append(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now())); } }
@Override public String toString() { synchronized(this) { return toStringLocked(); } }
@Override public void dispatch() { _executor.execute(()->produce()); }
@Override public void run() { if (LOG.isDebugEnabled()) LOG.debug("{} run", this); boolean produce = false; try (Lock locked = _locker.lock()) { _pending = false; if (!_idle && !_producing) { produce = _producing = true; } } if (produce) produceConsume(); }
private void execute(Runnable task) { try { _executor.execute(task); } catch (RejectedExecutionException e) { if (isRunning()) LOG.warn(e); else LOG.ignore(e); if (task instanceof Closeable) { try { ((Closeable)task).close(); } catch (Throwable e2) { LOG.ignore(e2); } } } }
@Override public void run() { tryProduce(true); }
@Override public void run() { produce(); }
@Override public void run() { produce(); } }
@Override public String toString() { synchronized(this) { return toStringLocked(); } }
@Override public void dispatch() { _executor.execute(()->produce()); }
@Override public void produce() { if (LOG.isDebugEnabled()) LOG.debug("{} execute", this); boolean produce = false; try (Lock locked = _locker.lock()) { // If we are idle and a thread is not producing if (_idle) { if (_producing) throw new IllegalStateException(); // Then this thread will do the producing produce = _producing = true; // and we are no longer idle _idle = false; } else { // Otherwise, lets tell the producing thread // that it should call produce again before going idle _execute = true; } } if (produce) produceConsume(); }
@Override public void run() { tryProduce(true); }
@Override public void produce() { tryProduce(false); }