Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger(二)

2014-11-23 22:32:22 · 作者: · 浏览: 1
rrent;
import java.util.Random;
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @ClassName: ExchangerTest
* @Description: 线程间的数据交换Exchanger
* @author: amosli
* @email:hi_amos@outlook.com
* @date Apr 28, 2014 12:26:48 AM
*/
public class ExchangerTest {
public static void main(String[] args) {
final Exchanger exchanger = new Exchanger();
ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
//线程一
newCachedThreadPool.execute(new Runnable() {
public void run() {
try {
String data1="111";
System.out.println("线程:"+Thread.currentThread().getName()+" 要换出去的数据为:"+data1);
Thread.sleep(new Random().nextInt(1000));
String exchange = exchanger.exchange(data1);
System.out.println("线程:"+Thread.currentThread().getName()+" 换回来的数据为:"+exchange);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
//线程二
newCachedThreadPool.execute(new Runnable() {
public void run() {
try {
String data1="hi_amos";
System.out.println("线程:"+Thread.currentThread().getName()+" 要换出去的数据为:"+data1);
Thread.sleep(new Random().nextInt(1000));
String exchange = exchanger.exchange(data1);
System.out.println("线程:"+Thread.currentThread().getName()+" 换回来的数据为:"+exchange);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
复制代码
这里只需要注意使用exchange()方法即可.