多线程编程13-----Exchanger同步工具类实现两线程数据交换
2014-09-01 16:20
639 查看
package zhu.suo;
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/*
* 两线程之间数据的交换
* */
public class ExchangerDemo {
public static void main(String[] args) {
ExecutorService service= Executors.newCachedThreadPool();
final Exchanger exchanger = new Exchanger();
service.execute(new Runnable() {
public void run() {
String data1="zz";
try {
System.out.println("线程"+Thread.currentThread().getName()+"准备把"+data1+"换取出");
Thread.sleep((long)Math.random()*1000);
String data2 = (String) exchanger.exchange(data1);
System.out.println("线程"+Thread.currentThread().getName()+"换回的数据为"+data2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
service.execute(new Runnable() {
public void run() {
String data1="xx";
try {
System.out.println("线程"+Thread.currentThread().getName()+"准备把"+data1+"换取出");
Thread.sleep((long)Math.random()*1000);
String data2 = (String) exchanger.exchange(data1);
System.out.println("线程"+Thread.currentThread().getName()+"换回的数据为"+data2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/*
* 两线程之间数据的交换
* */
public class ExchangerDemo {
public static void main(String[] args) {
ExecutorService service= Executors.newCachedThreadPool();
final Exchanger exchanger = new Exchanger();
service.execute(new Runnable() {
public void run() {
String data1="zz";
try {
System.out.println("线程"+Thread.currentThread().getName()+"准备把"+data1+"换取出");
Thread.sleep((long)Math.random()*1000);
String data2 = (String) exchanger.exchange(data1);
System.out.println("线程"+Thread.currentThread().getName()+"换回的数据为"+data2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
service.execute(new Runnable() {
public void run() {
String data1="xx";
try {
System.out.println("线程"+Thread.currentThread().getName()+"准备把"+data1+"换取出");
Thread.sleep((long)Math.random()*1000);
String data2 = (String) exchanger.exchange(data1);
System.out.println("线程"+Thread.currentThread().getName()+"换回的数据为"+data2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
相关文章推荐
- 13____java线程同步工具类之线程数据交换(Exchanger)
- 同步工具之Exchanger实现线程间的数据交换
- Java多线程编程之使用Exchanger数据交换实例
- Java并发工具类(四):线程间交换数据的Exchanger
- 多线程编程Demo[利用互斥对象实现线程间同步]
- Linux多线程编程之线程结合互斥锁实现同步
- java学习——使用Exchanger实现两个线程间的数据交换
- Delphi中多线程用Synchronize实现VCL数据同步显示 解决在线程中操作控件出现问题
- 2.使用synchronized关键字实现多线程的同步和互斥(不同线程同时读写同一数据)
- 黑马程序员-Condition条件对象、Semaphore、CyclicBarrier、倒计时门栓 CountDownLatch、Exchanger(实现两个线程之间数据交换
- Exchanger——Java两个线程间交换数据的工具类
- java多线程-Thread两个线程交换数据Exchanger
- Java多线程之~~~使用Exchanger在线程之间交换数据[这个结合多线程并行会有解决很多问题]生产者消费者模型
- 多线程 : 使用 Exchanger 两个线程间交换数据(一手交钱一手交货)
- Java并发工具类之线程间数据交换工具Exchanger
- 使用Exchanger实现线程间的数据交换
- Java多线程与并发库高级应用之线程数据交换Exchanger
- 并发工具类(四)线程间的交换数据 Exchanger
- 多线程编程之四 线程的同步
- 多线程编程之四——线程的同步