import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
publicclass ExchangerTest {
publicstaticvoid 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(){
publicvoid 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){
}
}
});
}
}
分享到:
相关推荐
- **JDK1.5线程并发库**:引入了更高级的并发控制机制,如`ExecutorService`、`Callable`、`Future`等,提供了更安全、更高效的多线程解决方案,减少了线程同步和死锁的风险。 ##### 2. 创建线程的两种传统方式 - ...
Java 并发工具类中有很多种,今天我们主要介绍四种:CyclicBarrier、CountDownLatch、Semaphore 和 Exchanger。 一、CyclicBarrier CyclicBarrier 是一种同步工具,允许一组线程互相等待,直到到达某个公共屏障点...
在JDK 1.5之后,Java引入了更多的并发工具类,以提供更多更高级的并发控制。例如,Condition接口提供了与Object的wait/notify等效的机制,但功能更加丰富。Semaphere同步工具可以控制通过数量有限的许可。...
Java并发工具类是Java平台提供的一系列用于处理多线程并发问题的类和接口,它们在`java.util.concurrent`包中。并发问题主要包括资源竞争、死锁、活锁以及饥饿等,合理使用并发工具可以有效地提高程序的并发性能并...
在Java的多线程编程中,为了有效地管理和协调并发执行的线程,Java提供了一系列的并发工具类。这些工具类极大地简化了并发编程中的同步和通信问题,使得开发者能够更安全、高效地编写多线程程序。以下是针对给定标题...
Java并发工具类是Java并发编程中的重要组成部分,其中包括了多种实用的工具,如CountDownLatch、Semaphore和Exchanger,这些工具类极大地简化了多线程环境下的同步和协调问题。 1. **CountDownLatch**: ...
标签“线程并发工具类”强调了文档将主要围绕Java的并发工具类展开。 #### 内容部分详解 文档主要内容包括CountDownLatch、CyclicBarrier、Semaphore和Exchanger等并发工具类的概念、使用方法、注意事项、底层实现...
【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 ...26.大白话说java并发工具类-Semaphore,Exchanger 27.一篇文章,让你彻底弄懂生产者--消费者问题
Java提供了一系列并发工具类,如Semaphore(信号量)、CyclicBarrier(循环屏障)、CountDownLatch(计数器门锁)和Exchanger(交换器),它们用于控制线程间访问资源的顺序和数量,协调多个线程间的操作。...
7. **并发工具类**:CountDownLatch、CyclicBarrier、Semaphore、Exchanger等并发工具的用法及应用场景。 8. **并发编程模式**:单例模式的线程安全实现,双检锁(DCL)、静态内部类等方式。 9. **J.U.C(java....
JUC包含了许多并发工具类,这些工具可以提高代码的可读性和安全性,减少对低级同步原语的依赖。以下是一些重要的JUC组件: 1. Executor框架:基于任务队列的线程池管理,如ThreadPoolExecutor,它可以有效地管理和...
│ 高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │ 高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │ 高并发编程第一阶段07讲、策略模式在Thread和Runnable...
8. **并发工具类**:Java 5引入了java.util.concurrent包,提供了丰富的并发工具类,比如CountDownLatch、CyclicBarrier、Semaphore和Exchanger等,它们提供更为高级的线程协作机制。 9. **Future和Callable**:...
3. 各种并发工具类:包括闭锁(CountDownLatch)、栅栏(CyclicBarrier)、信号量(Semaphore)、读写锁(ReentrantReadWriteLock)等,这些工具类提供了丰富的线程间协调和控制的机制,使得多线程之间的合作更加...
Java多线程高级特性:内容中出现的“ThreadLocal”,“CyclicBarrier”,“CountDownLatch”,“Exchanger”,“ArrayBlockingQueue”,“Lock”,“Condition”和“Semaphore”,这些都是Java 5以后版本引入的高级...
【Exchanger详解】Exchanger是另一个并发工具类,它用于两个线程之间交换数据。Exchanger提供一个同步点,当两个线程都到达同步点时,它们可以交换它们的数据。这种机制适用于一对一线程间的协作,例如在多阶段计算...
5. **并发工具类**:Java并发包(java.util.concurrent)中包含许多工具类,如Semaphore(信号量)、CountDownLatch(倒计时锁)、CyclicBarrier(回环栅栏)和Exchanger(交换器),它们是设计复杂多线程同步场景的...
4. **并发工具类**:Java并发包(java.util.concurrent)提供了丰富的工具类,如Semaphore(信号量)、CountDownLatch(倒计时器)、CyclicBarrier(回环屏障)和Exchanger(交换器)等。这些工具可以用来协调线程间的行为,...
│ 高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │ 高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │ 高并发编程第一阶段07讲、策略模式在Thread和Runnable...
在Java编程中,多线程通信是一个重要的概念,特别是在并发编程中。`ThreadDemo`示例可能演示了如何在不同的线程之间有效地传递信息。线程通信是解决多个执行流同步和协作的关键,确保数据的一致性和正确性。以下是...