I need an Object
to be asynchronously notified when some BlockingQueue
has got an item to give.
I\'ve searched both Javadoc and the web for a p
This reply is too late on the topic, but recently I was working on a similar problem and this is what I used.
When BlockingQueue receives a item/object, I used Spring's SimpleApplicationEventMulticaster which supports Asynchronous event processing. Basically, I published an event and configured it to process asynchronously rather than blocking the same execution thread, allowing the queue consumer to keep consuming as long as there are items to be processed in BlockingQueue, while the event listener/consumer can perform action asynchronously.
This looks like a good standard pattern for queue blocking and listeners. You make a good choice of making the listener interface. If you are not using the BlockingQueue class (which I am not clear of), the only thing is that you have manage is the correct wait()
and notify()
for managing the blocking call.
This particular SO Question "A simple scenario using wait() and notify() in java" provides a good overview on wait and notify and the usage related to BlockingQueue
Perhaps you could subclass some BlockingQueue
(such as ArrayBlockingQueue
or LinkedBlockingQueue
or what ever you're using), add support for listeners and do
@Override
public boolean add(E o) {
super.add(o);
notifyListeners(o);
}