No, there isn't. Sounds like a pretty easy thing to implement, though. Some options that jump to mind are:
- Include a CountDownLatch in the object to consume, and discard the item only when it reaches 0
- Have two of the consumers not consume the item (peek the queue rather than pop it)
- Don't use consumers, use listeners
Or if you're willing to use something outside of rt.jar, you could use a messaging queue. ActiveMQ and RabbitMQ are popular, they both support publish-subscribe.
EDIT: brief description of listener pattern
Instead of multiplie consumers, have a single ListenerManager consumer. It pulls an object from the queue, then passes it to all Listeners that have previously registered themselves with the ListenerManager. Finally, the ListenerManager disposes of the object. Have a single ListenerManager per queue, and a single queue per event/object type. This makes it easy to manage.