java并发编程学习juc工具类之Exchange

文章目录

    • Exchanger
    • 应用场景
    • 示例代码
    • 相关学习路线

Exchanger

当一个线程运行到exchange()方法时会阻塞,另一个线程运行到exchange()时,二者 交换数据,然后执行后面的程序。

应用场景

极少,待学习

示例代码

import java.util.concurrent.Exchanger;


public class ExchangerTest {

    public static void main(String []args) {
        final Exchanger<Integer> exchanger = new Exchanger<Integer>();
        for(int i = 0 ; i < 10 ; i++) {
            final Integer num = i;
            new Thread() {
                public void run() {
                    System.out.println("我是线程:Thread_" + this.getName() + "我的数据是:" + num);
                    try {
                        Integer exchangeNum = exchanger.exchange(num);
                        Thread.sleep(1000);
                        System.out.println("我是线程:Thread_" + this.getName() + "我原先的数据为:" + num + " , 交换后的数据为:" + exchangeNum);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }
    }
}

相关学习路线

JAVA资深架构师成长路线->架构师筑基必备技能->并发编程进阶

你可能感兴趣的:(juc,Exchange)