java 多线程-实例数据交换器 Exchanger
2017-12-05 20:20
603 查看
实例数据交换器用于在两个线程之间,相同类型的实例数据交互。比如讲线程A中的一个People实例的数据传递给线程B的一个People实例,
public class Test{
public static void main(String[] arg){
Exchanger<People> ex = new Exchanger<>();
Runnable taskA = ()->{
People pA = new People("A",1);
try {
Thread.sleep(2000);
//ex.exchange(pA);
//调用后将会返回一个 将会被清除数据的pA类型一样的实例 exchange 调用后taskA将会被阻塞 直到 taskB调用exchange后才会继续
pA = ex.exchange(pA);
Thread.sleep(2000);
System.out.println("任务A:"+pA.getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
};
Runnable taskB = ()->{
//首先申明一个没有数据的实例待会儿接受数据
People pB = new People();
try {
Thread.sleep(5000);
//调用后,pB实例将会获得pA的数据
pB = ex.exchange(pB);
Thread.sleep(2000);
System.out.println("任务B:"+pB.getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
};
new Thread(taskA,"Thread-A").start();
new Thread(taskB,"Thread-B").start();
}
}
public class Test{
public static void main(String[] arg){
Exchanger<People> ex = new Exchanger<>();
Runnable taskA = ()->{
People pA = new People("A",1);
try {
Thread.sleep(2000);
//ex.exchange(pA);
//调用后将会返回一个 将会被清除数据的pA类型一样的实例 exchange 调用后taskA将会被阻塞 直到 taskB调用exchange后才会继续
pA = ex.exchange(pA);
Thread.sleep(2000);
System.out.println("任务A:"+pA.getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
};
Runnable taskB = ()->{
//首先申明一个没有数据的实例待会儿接受数据
People pB = new People();
try {
Thread.sleep(5000);
//调用后,pB实例将会获得pA的数据
pB = ex.exchange(pB);
Thread.sleep(2000);
System.out.println("任务B:"+pB.getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
};
new Thread(taskA,"Thread-A").start();
new Thread(taskB,"Thread-B").start();
}
}
相关文章推荐
- Java多线程编程之使用Exchanger数据交换实例
- java 多线程-实例数据交换器 Exchanger
- java 多线程-实例数据交换器 Exchanger
- java 多线程-实例数据交换器 Exchanger
- Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger
- java多线程-Thread两个线程交换数据Exchanger
- Java多线程与并发库高级应用之线程数据交换Exchanger
- Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger
- java5 Exchanger数据交换
- java-程序运行时间检测实例-字符串叠加与两个变量交换数据
- 多线程 : 使用 Exchanger 两个线程间交换数据(一手交钱一手交货)
- java5 Exchanger数据交换
- java 线程间交换数据的Exchanger
- Exchanger——Java两个线程间交换数据的工具类
- java学习——使用Exchanger实现两个线程间的数据交换
- 多线程编程13-----Exchanger同步工具类实现两线程数据交换
- Java多线程/并发25、Exchanger线程数据交换
- Java 线程数据交换控制器Exchange使用实例
- Java Exchanger(两线程交换数据)
- Java多线程研究(八)使用Exchange在多个线程间交换数据