Java多线程编程之使用Exchanger数据交换实例
用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。
packagecom.ljq.test.thread;
importjava.util.concurrent.Exchanger;
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
publicclassExchangerTest{
publicstaticvoidmain(String[]args){
ExecutorServiceservice=Executors.newCachedThreadPool();
finalExchangerexchanger=newExchanger();
service.execute(newRunnable(){
publicvoidrun(){
try{
Stringdata1="张三";
System.out.println("线程"+Thread.currentThread().getName()+"正在把数据'"+data1+"'换出去");
Thread.sleep((long)(Math.random()*10000));
Stringdata2=(String)exchanger.exchange(data1);
System.out.println("线程"+Thread.currentThread().getName()+"换回的数据为'"+data2+"'");
}catch(Exceptione){
}
}
});
service.execute(newRunnable(){
publicvoidrun(){
try{
Stringdata1="李四";
System.out.println("线程"+Thread.currentThread().getName()+"正在把数据'"+data1+"'换出去");
Thread.sleep((long)(Math.random()*10000));
Stringdata2=(String)exchanger.exchange(data1);
System.out.println("线程"+Thread.currentThread().getName()+"换回的数据为'"+data2+"'");
}catch(Exceptione){
}
}
});
}
}
返回结果:
线程pool-1-thread-1正在把数据'张三'换出去 线程pool-1-thread-2正在把数据'李四'换出去 线程pool-1-thread-1换回的数据为'李四' 线程pool-1-thread-2换回的数据为'张三'
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练