Class PojoProducerConsumerQueue<T>
- java.lang.Object
-
- org.hibernate.search.mapper.pojo.massindexing.impl.PojoProducerConsumerQueue<T>
-
- Type Parameters:
T- produced type
public class PojoProducerConsumerQueue<T> extends Object
Implements a blocking queue capable of storing a "poison" token to signal consumer threads that the task is finished.- Author:
- Sanne Grinovero
-
-
Constructor Summary
Constructors Constructor Description PojoProducerConsumerQueue(int producersToWaitFor)PojoProducerConsumerQueue(int queueLength, int producersToWaitFor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidproducerStopping()Each producer thread should call producerStopping() when it has finished.voidput(T obj)Adds a new object to the queue, blocking if no space is available.Ttake()Blocks until an object is available; when null is returned the client thread should quit.
-
-
-
Method Detail
-
take
public T take() throws InterruptedException
Blocks until an object is available; when null is returned the client thread should quit.- Returns:
- the next object in the queue, or null to exit
- Throws:
InterruptedException- if interrupted while waiting
-
put
public void put(T obj) throws InterruptedException
Adds a new object to the queue, blocking if no space is available.- Parameters:
obj- the object to add to the queue- Throws:
InterruptedException- if interrupted while waiting
-
producerStopping
public void producerStopping()
Each producer thread should call producerStopping() when it has finished. After doing it can safely terminate. After all producer threads have called producerStopping() a token will be inserted in the blocking queue to eventually awake sleeping consumers and have them quit, after the queue has been processed.
-
-