@Override public void setTerminateOnEmpty() { synchronized (synchronizer) { // Count this also as inserting the terminator frame, hence trigger clearOnInsert if (clearOnInsert) { clear(); clearOnInsert = false; } if (!terminated) { terminateOnEmpty = true; signalWaiters(); } } }