Exchanger类实现了多个线程数据之间的安全交换。
以下是小示例:
import java.util.Random;
import java.util.concurrent.Exchanger;
/**
* 线程数据交换器
* @author YangBaoBao
*
*/
public class ExchangerDemo {
public static void main(String[] args) {
final Exchanger<String> changer=new Exchanger<String>();
new Thread(new Runnable() {
public void run() {
try{
Thread.sleep(new Random().nextInt(5000));
String data1="data1";
String data2=changer.exchange(data1);
System.out.println("thread1 get return data is "+data2);
}catch (Exception e) {
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable() {
public void run() {
try{
Thread.sleep(new Random().nextInt(5000));
String data1="data2";
String data2=changer.exchange(data1);
System.out.println("thread2 get return data is "+data2);
}catch (Exception e) {
// TODO: handle exception
}
}
}).start();
}
}