Definition
Der Name bedeutet Austausch . Exchanger wird verwendet, um Daten zwischen zwei Threads auszutauschen. Der Thread blockiert den Exchanger, bis ein anderer Thread ebenfalls die Exchange- Methode in Exchanger eingibt.
Code
package JavaNote_101;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Exchanger;
public class Java_103_Exchanger {
public static void main(String[] args) {
final Exchanger<List<Integer>> exchanger =new Exchanger<List<Integer>>();
new Thread(){
@Override
public void run() {
List<Integer> l = new ArrayList<Integer>(2);
l.add(1);
l.add(2);
try {
l = exchanger.exchange(l);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.println("Thread 1"+l);
}
}.start();
new Thread(){
@Override
public void run() {
List<Integer> l = new ArrayList<Integer>(2);
l.add(4);
l.add(5);
try {
l = exchanger.exchange(l);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.println("Thread 2"+l);
}
}.start();
}
}