时间:2021-05-20
用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。
复制代码 代码如下:
package com.ljq.test.thread;
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
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 = "张三";
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 = "李四";
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正在把数据'张三'换出去
线程pool-1-thread-2正在把数据'李四'换出去
线程pool-1-thread-1换回的数据为'李四'
线程pool-1-thread-2换回的数据为'张三'
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
简介Exchanger是java5引入的并发类,Exchanger顾名思义就是用来做交换的。这里主要是两个线程之间交换持有的对象。当Exchanger在一个线程
阻塞队列是多线程中常用的数据结构,对于实现多线程之间的数据交换、同步等有很大作用。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从
本文实例讲述了Java并发编程之常用的多线程实现方式。分享给大家供大家参考,具体如下:概述常用的多线程实现方式有2种:1. 继承Thread类2. 实现Runn
本文实例讲述了android编程之多线程编程实现方法。分享给大家供大家参考。具体分析如下:该功能与前面《android开发socket编程之udp发送实例分析》
java多线程之CyclicBarrier的使用方法publicclassCyclicBarrierTest{publicstaticvoidmain(Stri