定义
名字上来说就是交换。Exchanger用于在两个线程之间进行数据交换,线程会阻塞在exchanger上,直到另一个线程也进入了Exchanger中的exchange方法。
代码
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();
}
}