`

Exchanger实例

阅读更多
package concurrent.exchanger;
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 * 交换数据 
 * 当两个线程都到达exchanger.exchange(data)的时候就会交换数据
 */
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 = "zxx";
					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 = "lhm";
					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){
					
				}				
			}	
		});		
	}
}

分享到:
评论

相关推荐

    29 一手交钱,一手交货—Exchanger详解.pdf

    1. **创建Exchanger实例**:首先,你需要创建一个Exchanger对象,这将作为线程间交换数据的媒介。例如: ```java Exchanger<String> workmate = new Exchanger(); ``` 2. **线程交互**:然后,每个参与交换的...

    Java编程线程同步工具Exchanger的使用实例解析

    Java编程线程同步工具Exchanger的使用实例解析 Java编程线程同步工具Exchanger是Java编程语言中的一种线程同步工具,它提供了一种方便的方式来交换线程之间的信息。Exchanger类可以作为两个线程交换对象的同步点,...

    Java多线程编程之使用Exchanger数据交换实例

    在给定的实例代码中,我们创建了两个线程,每个线程都有一个字符串数据("张三"和"李四")。线程1首先打印出它正在交换的数据("张三"),然后随机休眠一段时间,接着调用`exchanger.exchange(data1)`。此时,线程1...

    Aspen Plus Heat Exchanger Example换热器模拟案例.pdf

    Aspen Plus是一款用于化工过程模拟、工艺设计与模拟的严格稳态模拟工具。它主要利用以下物理关系: 1. 质量和能量平衡:这是模拟过程中最基本的原理,质量守恒和能量守恒是化工过程模拟的基础。...

    Hot Water Heat Exchanger Control.rar

    标题中的“Hot Water Heat Exchanger Control”指的是...总之,这个压缩包提供的资料可能涵盖了热水换热器控制系统的全面设计和编程实例,对于学习和理解如何利用AB PLC实现高效稳定的热能转换控制具有很高的参考价值。

    通俗易懂学习java并发工具类-Semaphore,Exchanger

    Semaphore可以被理解为一种资源的许可证,每个许可证代表了一个可访问的资源实例。线程在执行前需要先获取许可证,如果没有可用的许可证,线程会进入阻塞状态,直到有其他线程释放许可证。这种方式有助于防止过多...

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

    某电信项目多线程同步数据实例

    5. **并发工具类**:Java并发包(java.util.concurrent)中包含许多工具类,如Semaphore(信号量)、CountDownLatch(倒计时锁)、CyclicBarrier(回环栅栏)和Exchanger(交换器),它们是设计复杂多线程同步场景的...

    ANSYS仿真案例Workbench有限元计算实例结果源文件流体fluent模型_ansys-workbench

    这个压缩包“ansys-workbench-cfx-heat-exchanger”可能包含了一个关于热交换器的仿真案例。下面将详细介绍ANSYS Workbench、Fluent以及它们在处理此类问题时的关键知识点。 首先,ANSYS Workbench是一个集成的工程...

    matlab开发-HeatExchangerModel

    总的来说,`matlab开发-HeatExchangerModel`项目是一个综合运用MATLAB编程、图形用户界面设计以及热力学和传热学知识的实例。通过`heat.m`,我们可以学习到如何在MATLAB中构建一个功能完备、交互性强的模拟系统,...

    Concurrent包的小例子

    Concurrent下的例子,涵盖了大部分常用类 例如BlockingQueue、CountDownLatch、CyclicBarrier、Exchanger、ExecuteService、lock、timeutil等

    Android多线程全新讲解.pdf

    2. Java多线程高级特性:内容中出现的“ThreadLocal”,“CyclicBarrier”,“CountDownLatch”,“Exchanger”,“ArrayBlockingQueue”,“Lock”,“Condition”和“Semaphore”,这些都是Java 5以后版本引入的...

    dubbo的消费者是怎么获取提供者服务接口引用的?.doc

    总结来说,Dubbo消费者获取服务提供者接口引用的过程涉及了多个组件和步骤,包括Spring容器的依赖注入、`ReferenceConfig`、`Protocol`、`Invoker`、`RegistryDirectory`、注册中心、`Exchanger`和`Transporter`等。...

    学习dubbo config

    13. HeaderExchanger.bind():这是Exchanger接口的默认实现,用于创建HeaderExchangeServer。 14. Transporters.bind():这是一个外观模式的实现,用于绑定url和处理handler。 15. @SPI("netty"):标记了默认使用...

    多线程通信ThreadDemo

    6. ** Phaser 和 Exchanger**:Java并发包中的高级同步工具,Phaser可以实现线程间的分阶段协调,Exchanger则用于两个线程之间交换数据。 7. **BlockingQueue**:队列实现的一种,提供了线程安全的数据结构,可以...

    java高并发1

    其他并发工具如CountDownLatch、CyclicBarrier和Exchanger则用于线程间的协调与同步。Future和FutureTask则用于异步计算的结果获取。 在设计模式中,单例模式是一种常用的模式,用于确保一个类只有一个实例。Java中...

    并发编程二进阶部分.rar

    Java并发包提供了一些强大的工具类,例如`Semaphore`(信号量)、`CountDownLatch`(倒计时器)、`CyclicBarrier`(循环栅栏)和`Exchanger`(交换器)。这些工具可以帮助我们构建更复杂的并发控制策略。比如,`...

    java并发编程之同步器代码示例

    常用的同步器有CountDownLatch、Semaphore、Barrier和Exchanger队列同步器等。AbstractQueuedSynchronizer是用来构建锁或者其他同步组件的基础框架,它内部使用了一个volatile修饰的int类型的成员变量state来表示...

    Java 并发编程实战(高清带目录).zip

    2. **Java并发API**:详细讲解了Java并发库中的关键类和接口,如Thread、Runnable、ExecutorService、Future、Semaphore、CyclicBarrier、CountDownLatch、Exchanger以及Lock(ReentrantLock、ReadWriteLock)等,...

Global site tag (gtag.js) - Google Analytics