`
shifulong
  • 浏览: 59199 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JUC--Exchanger

    博客分类:
  • java
阅读更多
Exchanger 用于线程之间数据交换,通过exchanger.exchange(obj) 这个方法交换
如果第一个线程执行到exchange方法,它会等待第二个线程也执行到exchange,
当两个线程都执行到同步点时,这两个线程就可以交换数据。

个人感觉可以做生产者和消费者呢,什么时候交换要有个交换策略的哈。

package com.test.uuu;

import java.util.concurrent.Exchanger;

public class ExchangerTest {

    public static void main(String[] args) {

        Exchanger exchanger = new Exchanger();

        new Thread(new ExchangeRunnable(exchanger, "A")).start();
        new Thread(new ExchangeRunnable(exchanger, "B")).start();

    }

    static class ExchangeRunnable implements Runnable {

        private Exchanger exchanger;
        private Object obj;

        public ExchangeRunnable(Exchanger exchanger, Object obj) {
            this.exchanger = exchanger;
            this.obj = obj;
        }

        public void run() {
            Object currentObj = this.obj;
            try {
                this.obj = exchanger.exchange(this.obj);
                System.out.printf("brfore exchange %s , after exchange %s \n",
                        currentObj, this.obj);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}



执行结果
brfore exchange : A , after exchange : B
brfore exchange : B , after exchange : A
分享到:
评论

相关推荐

    JUC-master

    《JUC:Java并发编程的艺术》 在Java世界中,JUC(Java Util Concurrency)是并发编程的核心库,它提供了丰富的并发工具类,帮助开发者有效地处理多线程和高并发场景。JUC库是Java 5引入的一个重大改进,大大简化了...

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

    此外,还有如ScheduledExecutorService用于定时任务,BlockingQueue用于生产者消费者模型,以及 Phaser 和 Exchanger 这些复杂场景下的并发工具。 总之,《狂神多线程+juc》资料包涵盖了Java并发编程的两大核心领域...

    java之JUC系列.pdf

    本篇内容将详细介绍JUC中的一些核心组件及其使用方法,包括CountDownLatch、Executors、Semaphore、Exchanger、CyclicBarrier、LinkedBlockingQueue、ThreadFactory等。 首先,我们来探讨一下Executors工具类。...

    JUC并发编程与源码分析视频课.zip

    5. **并发工具类**:包括CountDownLatch、CyclicBarrier、Semaphore、Exchanger等,这些工具可以帮助开发者协调多个线程间的协作,实现复杂的并发控制逻辑。 6. **Future和CompletableFuture**:讲解如何使用Future...

    JAVA线程高级-线程按序交替执行

    - JUC包含了许多高级并发组件,如`Semaphore`信号量、`CyclicBarrier`回环栅栏、`CountDownLatch`倒计时器和`Exchanger`交换器等,它们可以帮助控制线程的执行顺序。 - `Semaphore`可以限制同时访问特定资源的线程...

    JUC面试知识点手册快速版

    4.4 Exchanger 第五章:原子类和无锁编程 5.1 AtomicInteger与AtomicLong 5.2 AtomicReference 第六章:线程池及其应用 6.1 ThreadPoolExecutor 6.2 ScheduledThreadPoolExecutor 第七章:Fork/Join框架 ...

    JUC

    6. **并发工具类**:`CountDownLatch`、`CyclicBarrier`、`Semaphore`和`Exchanger`等,它们提供了一种同步机制,用于控制多个线程的并发行为。例如,`CountDownLatch`用于一次性释放多个线程,`CyclicBarrier`则...

    jdkLearning:阅读java原始代码包含:集合,JUC,Executor体系

    它包含了诸如Semaphore(信号量)、CyclicBarrier(回环屏障)、CountDownLatch(倒计时器)和Exchanger(交换器)等高级同步工具。通过研究这些类的源码,开发者可以学习到如何编写线程安全的代码,提高多线程环境...

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

    6. 并发控制和总结:J.U.C中还包括了Exchanger用于线程间交换数据,以及并发控制中的常见问题如死锁、性能与伸缩性等。开发者需要理解并避免这些问题,以保证程序的正确性和效率。 通过J.U.C,Java开发者可以更加...

    2019互联网面试题第2季.mmap.zip

    4. **并发工具类**:学习Semaphore(信号量)、CyclicBarrier(回环栅栏)、CountDownLatch(倒计时器)和Exchanger(交换器)等工具类,以及如何在实际项目中应用。 5. **线程池**:理解ExecutorService、...

    java_util_concurrent_user_guide

    7. **并发工具类**: `CountDownLatch`、`CyclicBarrier`、`Semaphore` 和 `Exchanger` 提供了线程间的同步和协调机制。例如,CountDownLatch常用于一次性事件,而CyclicBarrier则允许一组线程等待所有线程到达屏障点...

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

     Java高并发第三阶段(JUC).png  高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv  高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv  高并发编程第三阶段03讲 利用CAS构造一...

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

     Java高并发第三阶段(JUC).png  高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv  高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv  高并发编程第三阶段03讲 利用CAS构造一...

    软件公司Java最新面试题

    13. **JUC并发工具类**:如Semaphore、CyclicBarrier、CountDownLatch、Exchanger等,它们可以帮助解决复杂的并发问题。 在准备Java面试时,不仅要理解这些概念,还需要通过实际编程练习来增强应用能力。熟悉这些...

    java并发编程技术

    4. **并发包JUC(Java Util Concurrency)**:JUC是Java提供的高级并发工具包,包含如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)、Exchanger(交换器)等工具类,它们简化了多线程...

    java-core:JAVA集合包,线程池,并发包,NIO等API及链接相关学习

    java.util.concurrent(JUC)包包含了一系列高级并发工具,如Semaphore(信号量)、CyclicBarrier(回环屏障)、CountDownLatch(计数器门锁)和Exchanger(交换器),它们提供了更复杂的同步机制。另外,...

    java并发编程实践

    同步器是用于协调多个线程之间协作机制的工具,Java并发包中提供了CountDownLatch、Semaphore、Exchanger、CyclicBarrier等同步器,它们可以在复杂的并发场景中提供高效的线程间同步。 在并发编程实践中,还提到了...

Global site tag (gtag.js) - Google Analytics