【Java】11.Exchanger使用与分析

来源:互联网 发布:淘宝改后台软件多少钱 编辑:程序博客网 时间:2024/05/21 06:26

1.官方资料

The java.util.concurrent.Exchanger class represents a kind of rendezvous point where two threads can exchange objects. Here is an illustration of this mechanism: image

Exchanging objects is done via one of the two exchange() methods. Here is an example:

2.示例:

package com.naton.manager.concurrent.exchanger;import java.util.concurrent.Exchanger;public class ExChangerTest {public static void main(String[] args) {Exchanger exchanger = new Exchanger();ExchangerRunnable exchangerRunnable1 =        new ExchangerRunnable(exchanger, "A");ExchangerRunnable exchangerRunnable2 =        new ExchangerRunnable(exchanger, "B");new Thread(exchangerRunnable1).start();new Thread(exchangerRunnable2).start();}static class ExchangerRunnable implements Runnable{    Exchanger exchanger = null;    Object    object    = null;    public ExchangerRunnable(Exchanger exchanger, Object object) {        this.exchanger = exchanger;        this.object = object;    }    public void run() {        try {            Object previous = this.object;            this.object = this.exchanger.exchange(this.object);            System.out.println(                    Thread.currentThread().getName() +                    " exchanged " + previous + " for " + this.object            );        } catch (InterruptedException e) {            e.printStackTrace();        }    }}}输出结果:Thread-0 exchanged A for BThread-1 exchanged B for A

3.使用场景分析 线程之间交换数据

原创粉丝点击