This
class
allows two threads to rendezvous and exchange data. This is a generic
type, and the type variable V represents
the type of data to be exchanged. Each thread should call
exchange( ) and pass the value of type
V that it wants to exchange. The first
thread to call exchange( ) blocks until the second
thread calls it. At that point, both threads resume. Both threads
receive as their return value the object of type
V passed by the other thread. Note that
this class also defines a timed version of exchange(
) that throws a TimeoutException if no
exchange occurs within the specified timeout interval. Unlike a
CountDownLatch, which is a one-shot latch, and
CyclicBarrier which can be
"broken," an
Exchanger may be reused for any number of
exchanges.
public class Exchanger<V> {
// Public Constructors
public Exchanger( );
// Public Instance Methods
public V exchange(V x) throws InterruptedException;
public V exchange(V x, long timeout, TimeUnit unit)
throws InterruptedException, TimeoutException;
}