Class ThreadedStreamConsumer.QueueSynchronizer<T>
- java.lang.Object
-
- org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer.QueueSynchronizer<T>
-
- Type Parameters:
T
- element type in the queue
- Enclosing class:
- ThreadedStreamConsumer
static class ThreadedStreamConsumer.QueueSynchronizer<T> extends java.lang.Object
This synchronization helper mostly avoids the locks. If the queue size has reached zero ormaxQueueSize
then the threads are locked (parked/unparked). The thread instance T1 is reader (see the class "Pumper") and T2 is the writer (see the method "handleEvent").
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
ThreadedStreamConsumer.QueueSynchronizer.SyncT1
private class
ThreadedStreamConsumer.QueueSynchronizer.SyncT2
-
Field Summary
Fields Modifier and Type Field Description private int
maxQueueSize
private java.util.concurrent.ConcurrentLinkedDeque<T>
queue
private java.util.concurrent.atomic.AtomicInteger
queueSize
private T
stopItemMarker
private ThreadedStreamConsumer.QueueSynchronizer.SyncT1
t1
private ThreadedStreamConsumer.QueueSynchronizer.SyncT2
t2
-
Constructor Summary
Constructors Constructor Description QueueSynchronizer(int maxQueueSize, T stopItemMarker)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addNext(T t)
(package private) T
awaitNext()
(package private) void
clearQueue()
(package private) boolean
isEmptyQueue()
(package private) void
markStopped()
(package private) void
pushNext(T t)
-
-
-
Field Detail
-
t1
private final ThreadedStreamConsumer.QueueSynchronizer.SyncT1 t1
-
t2
private final ThreadedStreamConsumer.QueueSynchronizer.SyncT2 t2
-
queue
private final java.util.concurrent.ConcurrentLinkedDeque<T> queue
-
queueSize
private final java.util.concurrent.atomic.AtomicInteger queueSize
-
maxQueueSize
private final int maxQueueSize
-
stopItemMarker
private final T stopItemMarker
-
-
Constructor Detail
-
QueueSynchronizer
QueueSynchronizer(int maxQueueSize, T stopItemMarker)
-
-