java学习——使用Exchanger实现两个线程间的数据交换
2011-11-23 11:35
951 查看
package com.hujl.thread; import java.util.concurrent.Exchanger; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 线程之间互换数据 * @author Janrone * @website http://hujl.sinaapp.com */ public class ExchangerDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ExecutorService service=Executors.newCachedThreadPool(); //线程之间交换数据 final Exchanger<String> exchanger=new Exchanger<String>(); service.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub String data1="data1"; System.out .println("线程"+Thread.currentThread().getName()+"正在把数据交换出去"+data1); try { Thread.sleep((long)(Math.random()*10000)); String data2=exchanger.exchange(data1); System.out .println("线程"+Thread.currentThread().getName()+"换回来的数据"+data2); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); service.execute(new Runnable() { @Override public void run() { // TODO Auto-generated method stub String data1="data2"; System.out .println("线程"+Thread.currentThread().getName()+"正在把数据交换出去"+data1); try { Thread.sleep((long)(Math.random()*10000)); String data2=exchanger.exchange(data1); System.out .println("线程"+Thread.currentThread().getName()+"换回来的数据"+data2); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); service.shutdown(); } }
相关文章推荐
- 使用Exchanger实现线程间的数据交换
- Exchanger——Java两个线程间交换数据的工具类
- 黑马程序员-Condition条件对象、Semaphore、CyclicBarrier、倒计时门栓 CountDownLatch、Exchanger(实现两个线程之间数据交换
- 多线程 : 使用 Exchanger 两个线程间交换数据(一手交钱一手交货)
- java多线程-Thread两个线程交换数据Exchanger
- Java Exchanger(两线程交换数据)
- Java多线程学习笔记1——线程的实现方式以及定时器的使用
- Java多线程之~~~使用Exchanger在线程之间交换数据
- Exchanger 实现两个伙伴线程之间的数据交互
- 学习java多线程的笔记3-使用BlockingQueue阻塞队列来模拟两个线程之间的通信
- Java 线程数据交换控制器Exchange使用实例
- Exchanger两个线程之间交换数据
- Java并发工具类(四):线程间交换数据的Exchanger
- 使用Java线程并发库实现两个线程交替打印的线程题
- Java多线程研究(八)使用Exchange在多个线程间交换数据
- java 中的wait和notify以及synchronized的使用,实现两个线程交替执行
- 两个线程进行数据交换的Exchanger
- Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger
- 多线程编程13-----Exchanger同步工具类实现两线程数据交换
- Java多线程与并发库高级应用之线程数据交换Exchanger