@Test
public void test04(){
Exchanger<String> exchanger = new Exchanger<>(); //new出交换机
new Thread(new Spy01(exchanger)).start(); //从构造方法传入对象中
new Thread(new Spy02(exchanger)).start();
}
class Spy01 implements Runnable{
Exchanger<String> exchanger;
public Spy01(Exchanger<String> exchanger) {
this.exchanger = exchanger; //从构造方法传入交换机
}
@Override
public void run() {
String str01 = "天苍苍"; //暗号,也就是要传给另一方的数据
try {
String spy02 = exchanger.exchange(str01);
//该方法将自己的数据传给对方,同时接收的是对方传来的数据
System.out.println("spy02说:"+spy02);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Spy02 implements Runnable{
Exchanger<String> exchanger;
public Spy02(Exchanger<String> exchanger) {
this.exchanger = exchanger;
}
@Override
public void run() {
String str02 = "野茫茫";
try {
String spy01 = exchanger.exchange(str02);
System.out.println("spy01说:" + spy01);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
spy02说:野茫茫
spy01说:天苍苍