作用:线程间数据交换
示例代码:
package 并发包.Exchanger;
import java.util.concurrent.Exchanger;
public class ThreadA extends Thread{
private Exchanger ex;
public ThreadA(Exchanger ex){
this.ex = ex;
}
@Override
public void run() {
System.out.println("线程A的任务开始执行了");
try {
System.out.println("线程A已经发出了礼物");
Object B = ex.exchange("礼物A");
System.out.println("线程A-->收到了线程B返回的礼物:"+ B);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package 并发包.Exchanger;
import java.util.concurrent.Exchanger;
public class ThreadB extends Thread {
private Exchanger ex;
public ThreadB(Exchanger ex) {
this.ex = ex;
}
@Override
public void run() {
System.out.println("线程B任务开始执行了");
try {
System.out.println("线程B已经发出了礼物");
Object o = ex.exchange("礼物B");
System.out.println("线程B-->收到了线程A返回的礼物:" + o);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package 并发包.Exchanger;
import java.util.concurrent.Exchanger;
public class TestExchangerDemo {
public static void main(String[] args) {
Exchanger objectExchanger = new Exchanger();
new ThreadA(objectExchanger).start();
new ThreadB(objectExchanger).start();
}
}