Exchanger
Exchanger can be used to sync data bewteen two threads.
import java.util.concurrent.Exchanger;
public class Main {
public static void main(String[] args) {
Exchanger<String> exchanger = new Exchanger<>();
Runnable task = () -> {
try {
String name = Thread.currentThread().getName();
// send out message and wait for message from others
String response = exchanger.exchange("hello from " + name);
System.out.println(name + " received: " + response);
} catch (InterruptedException e) {
e.printStackTrace();
}
};
new Thread(task).start();
new Thread(task).start();
}
}
Expected output:
Thread-0 received: hello from Thread-1
Thread-1 received: hello from Thread-0