多线程编程13-----Exchanger同步工具类实现两线程数据交换
来源:互联网 发布:流体热力学软件 编辑:程序博客网 时间:2024/04/30 08:18
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();
}
}
});
}
}
0 0
- 多线程编程13-----Exchanger同步工具类实现两线程数据交换
- 13____java线程同步工具类之线程数据交换(Exchanger)
- 多线程编程入门(18):线程同步工具之Exchanger
- Java Exchanger(两线程交换数据)
- Exchanger:线程交换数据
- Exchanger数据交换工具
- Java5 多线程(七)--Exchanger同步工具类
- Java多线程之~~~使用Exchanger在线程之间交换数据
- JAVA多线程—Exchanger-线程间交换数据
- java多线程-Thread两个线程交换数据Exchanger
- Java多线程/并发25、Exchanger线程数据交换
- exchanger 线程之间交换数据
- JAVA中的并发工具类(四)---线程间交换数据的Exchanger类
- 并发工具类(四)线程间的交换数据 Exchanger
- java 多线程-实例数据交换器 Exchanger
- Exchanger: 两个线程 间 交换 数据
- jdk5 Exchanger 线程之间数据交换
- jdk5 Exchanger 线程之间数据交换
- 通过smali调试android APK
- 函数指针
- 发送短信成功
- ASP.NET动态数据网站实战
- ajax请求webservice错误Request format is invalid: application/json;utf-8
- 多线程编程13-----Exchanger同步工具类实现两线程数据交换
- 自动化测试实施步骤和最佳实践
- Unity3D学习笔记 Perfab
- cocos2dx 让一个滚动层跟着另一个动
- UML之轻松入门(1)-类图
- HDU-#2087 剪花布条(KMP & strstr)
- POJ 2942 Knights of the Round Table (点-双连通分量 + 交叉法染色判二分图)
- 修改Eclipse的默认charset 为utf-8
- 黑马程序员——预处理指令(宏定义)