Diagram showing the internal architecture of a JGroups Protocol in releases 2.4.x and earlier. Events received from a neighboring protocol are placed in a queue, one queue for events received from above, one for events received from below. Each protocol maintains two threads, the up_thread and the down_thread, which are responsible for taking events from their queue, invoking the down() or up() operation and passing the event to the next protocol in the stack.
Use of these queues and threads can be disabled on a per-protocol basis by adding up_thread="false" and/or down_thread="false" to the protocol's configuration.
In JGroups 2.5 and later, this queuing mechanism has been removed.