JUC-工具类:4. Exchanger
2021-06-16 本文已影响0人
rock_fish
功能概述
一对线程都准备好数据后,交换数据。
方法介绍
- 构造方法无参。凑齐了两个线程才可以进行交换。即t1对t2,t3对t4,t4对t5,t1对t3...
- exchange:
2.1 若第一个线程调用exchange,提供了自己的数据后,阻塞等待第二个线程到来
2.2 第二个线程调用exchange,唤醒第一个线程,双方交换数据后,各自忙各自的去。 - 若交换的是引用对象,那么两个线程都拿到了对象的引用。涉及到共享资源的线程安全问题,需要留意。
场景案例
对于生产者消费者模式 可用于 1生 :1消 或者 1生:多消(抢夺式消费,生产一个抢走一个)