`

多线程并发库工具类Exchanger

    博客分类:
  • java
阅读更多





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){
             
           }         
        } 
      });    
   }
}


分享到:
评论

相关推荐

    张孝祥Java多线程与并发库高级应用笔记

    - **JDK1.5线程并发库**:引入了更高级的并发控制机制,如`ExecutorService`、`Callable`、`Future`等,提供了更安全、更高效的多线程解决方案,减少了线程同步和死锁的风险。 ##### 2. 创建线程的两种传统方式 - ...

    java并发之并发工具类

    Java 并发工具类中有很多种,今天我们主要介绍四种:CyclicBarrier、CountDownLatch、Semaphore 和 Exchanger。 一、CyclicBarrier CyclicBarrier 是一种同步工具,允许一组线程互相等待,直到到达某个公共屏障点...

    经典Java多线程与并发库高级应用

    在JDK 1.5之后,Java引入了更多的并发工具类,以提供更多更高级的并发控制。例如,Condition接口提供了与Object的wait/notify等效的机制,但功能更加丰富。Semaphere同步工具可以控制通过数量有限的许可。...

    java并发工具类

    Java并发工具类是Java平台提供的一系列用于处理多线程并发问题的类和接口,它们在`java.util.concurrent`包中。并发问题主要包括资源竞争、死锁、活锁以及饥饿等,合理使用并发工具可以有效地提高程序的并发性能并...

    笔记-2、线程的并发工具类2

    在Java的多线程编程中,为了有效地管理和协调并发执行的线程,Java提供了一系列的并发工具类。这些工具类极大地简化了并发编程中的同步和通信问题,使得开发者能够更安全、高效地编写多线程程序。以下是针对给定标题...

    java并发工具类(CountDownLatch+Semaphore+Exchanger)

    Java并发工具类是Java并发编程中的重要组成部分,其中包括了多种实用的工具,如CountDownLatch、Semaphore和Exchanger,这些工具类极大地简化了多线程环境下的同步和协调问题。 1. **CountDownLatch**: ...

    并发编程——并发工具类.pdf

    标签“线程并发工具类”强调了文档将主要围绕Java的并发工具类展开。 #### 内容部分详解 文档主要内容包括CountDownLatch、CyclicBarrier、Semaphore和Exchanger等并发工具类的概念、使用方法、注意事项、底层实现...

    【2018最新最详细】并发多线程教程

    【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 ...26.大白话说java并发工具类-Semaphore,Exchanger 27.一篇文章,让你彻底弄懂生产者--消费者问题

    java线程与并发编程实践

    Java提供了一系列并发工具类,如Semaphore(信号量)、CyclicBarrier(循环屏障)、CountDownLatch(计数器门锁)和Exchanger(交换器),它们用于控制线程间访问资源的顺序和数量,协调多个线程间的操作。...

    马士兵多线程训练营笔记

    7. **并发工具类**:CountDownLatch、CyclicBarrier、Semaphore、Exchanger等并发工具的用法及应用场景。 8. **并发编程模式**:单例模式的线程安全实现,双检锁(DCL)、静态内部类等方式。 9. **J.U.C(java....

    thread.zip--狂神多线程+juc

    JUC包含了许多并发工具类,这些工具可以提高代码的可读性和安全性,减少对低级同步原语的依赖。以下是一些重要的JUC组件: 1. Executor框架:基于任务队列的线程池管理,如ThreadPoolExecutor,它可以有效地管理和...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │ 高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │ 高并发编程第一阶段07讲、策略模式在Thread和Runnable...

    Java多线程、并发编程知识点总结.pdf

    8. **并发工具类**:Java 5引入了java.util.concurrent包,提供了丰富的并发工具类,比如CountDownLatch、CyclicBarrier、Semaphore和Exchanger等,它们提供更为高级的线程协作机制。 9. **Future和Callable**:...

    深入浅出_Java并发工具包原理讲解

    3. 各种并发工具类:包括闭锁(CountDownLatch)、栅栏(CyclicBarrier)、信号量(Semaphore)、读写锁(ReentrantReadWriteLock)等,这些工具类提供了丰富的线程间协调和控制的机制,使得多线程之间的合作更加...

    Android多线程全新讲解.pdf

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

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

    【Exchanger详解】Exchanger是另一个并发工具类,它用于两个线程之间交换数据。Exchanger提供一个同步点,当两个线程都到达同步点时,它们可以交换它们的数据。这种机制适用于一对一线程间的协作,例如在多阶段计算...

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

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

    java多线程设计模式(pdf)

    4. **并发工具类**:Java并发包(java.util.concurrent)提供了丰富的工具类,如Semaphore(信号量)、CountDownLatch(倒计时器)、CyclicBarrier(回环屏障)和Exchanger(交换器)等。这些工具可以用来协调线程间的行为,...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │ 高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │ 高并发编程第一阶段07讲、策略模式在Thread和Runnable...

    多线程通信ThreadDemo

    在Java编程中,多线程通信是一个重要的概念,特别是在并发编程中。`ThreadDemo`示例可能演示了如何在不同的线程之间有效地传递信息。线程通信是解决多个执行流同步和协作的关键,确保数据的一致性和正确性。以下是...

Global site tag (gtag.js) - Google Analytics