两个线程之间进行数据交换的工具类
import java.util.Random;
import java.util.concurrent.Exchanger;
/**
*Exchanger
*只有当两个线程同时执行到exchange时,进程才能继续往下执行,否者线程等待
*/
public class ThreadTest2 {
public static void main(String[] args) {
Exchanger<String> exchanger=new Exchanger<String>();
new Thread(new Runnable(){
@Override
public void run() {
try {
Thread.sleep(new Random().nextInt(5)*1000);
System.out.println("线程"+Thread.currentThread().getName()+"说的数据: "+exchanger.exchange(Thread.currentThread().getName()));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(new Random().nextInt(5)*1000);
System.out.println("线程"+Thread.currentThread().getName()+"说的数据: "+exchanger.exchange(Thread.currentThread().getName()));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}