前言:学习受教了,二话不说,贴上干货,走起来----【在2个线程之间传递任意数据类型的数据】
package com.zcw.demo3;
import java.util.concurrent.Exchanger;
/**
* @ClassName : ThreadA
* @Description :
* @Author : Zhaocunwei
* @Date: 2020-04-14 17:17
*/
public class ThreadA extends Thread {
private Exchanger<String> exchanger;
public ThreadA(Exchanger<String> exchanger){
super();
this.exchanger = exchanger;
}
@Override
public void run(){
try{
System.out.println("在线程A中得到线程B的值==="+exchanger.exchange("AAAAAAA"));
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package com.zcw.demo3;
import java.util.concurrent.Exchanger;
/**
* @ClassName : ThreadB
* @Description :
* @Author : Zhaocunwei
* @Date: 2020-04-14 17:19
*/
public class ThreadB extends Thread {
private Exchanger<String> exchanger;
public ThreadB(Exchanger<String> exchanger){
super();
this.exchanger = exchanger;
}
@Override
public void run(){
try {
System.out.println("在线程B中得到线程A的值====="+exchanger.exchange("BBBBBBBBBBBBB"));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package com.zcw.demo3;
import java.util.concurrent.Exchanger;
/**
* @ClassName : Run
* @Description :
* @Author : Zhaocunwei
* @Date: 2020-04-14 17:21
*/
public class Run {
public static void main(String[] args) {
Exchanger<String> exchanger = new Exchanger<String>();
ThreadA a = new ThreadA(exchanger);
ThreadB b = new ThreadB(exchanger);
a.start();
b.start();
}
}
运行结果: