public RequestTable<T> removeMany(LongStream seqnos, Consumer<T> consumer) {
        if(seqnos == null) return this;
        AtomicBoolean advance=new AtomicBoolean(false);

        seqnos.forEach(seqno -> {
            T element=null;
            lock.lock();
            try {
                if(seqno < low || seqno > high)
                    return;
                int index=index(seqno);
                if((element=buffer[index]) != null && removes_till_compaction > 0)
                    num_removes++;
                buffer[index]=null;
                if(seqno == low)
                    advance.set(true);
            }
            finally {
                lock.unlock();
            }
            if(consumer != null)
                consumer.accept(element);
        });

        lock.lock();
        try {
            if(advance.get())
                advanceLow();
            if(removes_till_compaction > 0 && num_removes >= removes_till_compaction) {
                _compact();
                num_removes=0;
            }
        }
        finally {
            lock.unlock();
        }
        return this;
    }
public RequestTable < T > removeMany ( LongStream seqnos , Consumer < T > consumer ) { if ( seqnos == null ) return this ; AtomicBoolean advance = new AtomicBoolean ( false ) ; seqnos . forEach ( seqno -> { T element = null ; lock . lock ( ) ; try { if ( seqno < low || seqno > high ) return ; int index = index ( seqno ) ; if ( ( element = buffer [ index ] ) != null && removes_till_compaction > 0 ) num_removes ++ ; buffer [ index ] = null ; if ( seqno == low ) advance . set ( true ) ; } finally { lock . unlock ( ) ; } if ( consumer != null ) consumer . accept ( element ) ; } ) ; lock . lock ( ) ; try { if ( advance . get ( ) ) advanceLow ( ) ; if ( removes_till_compaction > 0 && num_removes >= removes_till_compaction ) { _compact ( ) ; num_removes = 0 ; } } finally { lock . unlock ( ) ; } return this ; }
Removes all elements in the stream. Calls the consumer (if not null) on non-null elements