package thread.exchanger;
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test {
/**
* @author jzh 2011-12-27
* @param args
*/
public static void main(String[] args) {
// 创建一个线程池(创建一个可根据需要创建新线程的线程池)
// Executors 类提供了用于此包中所提供的执行程序服务的工厂方法
ExecutorService pool = Executors.newCachedThreadPool();
final Exchanger<String> exchanger = new Exchanger<String>();
// 交换者
pool.execute(new Runnable() {
public void run() {
try {
String put = "iphone";
System.out.println("jiang" + "正在把" + put + "换出去");
Thread.sleep(100);
String take = (String) exchanger.exchange(put);
System.out.println("jiang"+ "换回" + take);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
// 交换者
pool.execute(new Runnable() {
public void run() {
try {
String put = "ipad";
System.out.println("jzh" + "正在把" + put + "换出去");
Thread.sleep(200);
String take = (String) exchanger.exchange(put);
System.out.println("jzh" + "换回" + take);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
// 退出线程池
pool.shutdown();
}
}