美文网首页Java
Java Exchanger

Java Exchanger

作者: 咸鱼佬 | 来源:发表于2017-11-20 12:14 被阅读3次

简介

使两个线程之间传输数据,可以传输任意的数据类型

exchange()阻塞特性

调用exchange方法后盖线程会等待其他线程来交换数据,一直阻塞等待下去,直到来交换获取

public static void main(String[] args) {
    Exchanger exchanger = new Exchanger();

    ExchangerThreadA exchangerThreadA = new ExchangerThreadA(exchanger);

    exchangerThreadA.start();
   //ExchangerThreadB exchangerThreadB = new ExchangerThreadB(exchanger);
   //exchangerThreadB.start();

    System.out.println("main end");
}
/****************/
public class ExchangerThreadA extends Thread {
    
    Exchanger<String> exchanger;

    public ExchangerThreadA(Exchanger<String> exchanger) {
        this.exchanger = exchanger;
    }

    @Override
    public void run() {

        try {
            System.out.println("in Thread A get Thread B value " + exchanger.exchange("i come from Thread A"));
            System.out.println("end ");

        } catch (InterruptedException e) {

        }

    }
}

重载方法

public V exchange(V x, long timeout, TimeUnit unit)
    throws InterruptedException, TimeoutException

在超出时间没有线程来交换/获取的话,那么就会出现超时异常,进入catch 中,在另一种角度来说算是一种解决一直等待浪费线程的问题吧

相关文章

网友评论

    本文标题:Java Exchanger

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