美文网首页
java.util.concurrent 交换机 Exchang

java.util.concurrent 交换机 Exchang

作者: dinel | 来源:发表于2020-04-28 22:48 被阅读0次

交换机 Exchanger

java.util.concurrent.Exchanger 类表示一种两个线程可以进行互相交换对象的会和点。这种机
制图示如下:


图片.png

交换对象的动作由 Exchanger 的两个 exchange() 方法的其中一个完成。以下是一个示例:

Exchanger exchanger = new Exchanger();
ExchangerRunnable exchangerRunnable1 =new ExchangerRunnable(exchanger, "A");
ExchangerRunnable exchangerRunnable2 =new ExchangerRunnable(exchanger, "B");
new Thread(exchangerRunnable1).start();
new Thread(exchangerRunnable2).start();

ExchangerRunnable 代码:

public 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();
        }
    }
}

相关文章

网友评论

      本文标题:java.util.concurrent 交换机 Exchang

      本文链接:https://www.haomeiwen.com/subject/rhiiwhtx.html