java多线程之通过Exchanger线程间传递数据
2015-06-30 21:32
399 查看
public class ExchangerTest { public static void main(String[] args) { ExecutorService service = Executors.newCachedThreadPool(); final Exchanger exchanger = new Exchanger(); service.execute(new Runnable(){ public void run() { try { String data1 = "zxx"; System.out.println("线程" + Thread.currentThread().getName() + "正在把数据" + data1 +"换出去"); Thread.sleep((long)(Math.random()*10000)); String data2 = (String)exchanger.exchange(data1); System.out.println("线程" + Thread.currentThread().getName() + "换回的数据为" + data2); }catch(Exception e){ } } }); service.execute(new Runnable(){ public void run() { try { String data1 = "lhm"; System.out.println("线程" + Thread.currentThread().getName() + "正在把数据" + data1 +"换出去"); Thread.sleep((long)(Math.random()*10000)); String data2 = (String)exchanger.exchange(data1); System.out.println("线程" + Thread.currentThread().getName() + "换回的数据为" + data2); }catch(Exception e){ } } }); } }
运行结果如下:
线程pool-1-thread-1正在把数据zxx换出去
线程pool-1-thread-2正在把数据lhm换出去
线程pool-1-thread-1换回的数据为lhm
线程pool-1-thread-2换回的数据为zxx
相关文章推荐
- 在Eclipse中安装dorado5插件
- java中关于对象的复制
- 【JavaWeb程序设计】大作业朋友圈实现过程中的错误和心得
- java 多线之用ReadWriteLock实现 一个简单缓存
- Java之旅(1)—Class类
- java多线程之CountdownLatch简单应用
- Spring注入Bean的几种方式
- Java struts2 上传2M大小限制错误
- 'tools.jar' seems to be not in Android Studio classpath. Please ensure JAVA_HOME points to JDK rathe
- 学习JAVA中(一) 一些简单的排序算法
- Spring - 如何实现IOC
- SSH-struts2入门实例
- java多线程之CyclicBarrier简单用法
- JAVA中的内部类--匿名内部类
- 命令行状态下编译Java程序
- 在MAC上查找和设置$JAVA_HOME
- SpringMVC基于浏览器国际化实现
- java 多线程之Semaphore互斥类的用法
- 深入理解JavaWeb技术内幕(一)
- Pydev for eclipse 安装及配置