最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java并發(fā)編程之Exchanger方法詳解

 更新時(shí)間:2021年04月12日 14:28:20   作者:我真的不會(huì)Java啊  
這篇文章主要介紹了Java并發(fā)編程之Exchanger方法詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

簡(jiǎn)介

Exchanger是一個(gè)用于線程間數(shù)據(jù)交換的工具類,它提供一個(gè)公共點(diǎn),在這個(gè)公共點(diǎn),兩個(gè)線程可以交換彼此的數(shù)據(jù)。

當(dāng)一個(gè)線程調(diào)用exchange方法后將進(jìn)入等待狀態(tài),直到另外一個(gè)線程調(diào)用exchange方法,雙方完成數(shù)據(jù)交換后繼續(xù)執(zhí)行。

Exchanger的使用

方法介紹

exchange(V x):阻塞當(dāng)前線程,直到另外一個(gè)線程調(diào)用exchange方法或者當(dāng)前線程被中斷。

  1. x : 需要交換的對(duì)象。

exchange(V x, long timeout, TimeUnit unit):阻塞當(dāng)前線程,直到另外一個(gè)線程調(diào)用exchange方法或者當(dāng)前線程被中斷或者等待超時(shí)。

  • x: 需要交換的對(duì)象。
  • timeout:超時(shí)時(shí)間。
  • unit:超時(shí)時(shí)間單位。

exchange方法正常情況返回交換到的對(duì)象,當(dāng)當(dāng)前線程被中斷或者等待超時(shí)時(shí),exchange方法返回null。

示例1:A同學(xué)和B同學(xué)交換各自收藏的大片

public class Demo {
    public static void main(String[] args) {
        Exchanger<String> stringExchanger = new Exchanger<>();

        Thread studentA = new Thread(() -> {
            try {
                String dataA = "A同學(xué)收藏多年的大片";
                String dataB = stringExchanger.exchange(dataA);
                System.out.println("A同學(xué)得到了" + dataB);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        Thread studentB = new Thread(() -> {
            try {
                String dataB = "B同學(xué)收藏多年的大片";
                String dataA = stringExchanger.exchange(dataB);
                System.out.println("B同學(xué)得到了" + dataA);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        studentA.start();
        studentB.start();
    }
}

/*
 * 輸出結(jié)果:
 * B同學(xué)得到了A同學(xué)收藏多年的大片
 * A同學(xué)得到了B同學(xué)收藏多年的大片
 */

示例2:A同學(xué)被放鴿子,交易失敗

public class Demo {
    public static void main(String[] args) {
        Exchanger<String> stringExchanger = new Exchanger<>();

        Thread studentA = new Thread(() -> {
            String dataB = null;
            try {
                String dataA = "A同學(xué)收藏多年的大片";
                //最多等待5秒
                dataB = stringExchanger.exchange(dataA, 5, TimeUnit.SECONDS);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (TimeoutException ex){
                System.out.println("等待超時(shí)-TimeoutException");
            }

            System.out.println("A同學(xué)得到了" + dataB);
        });

        studentA.start();
    }
}

/*
 * 輸出結(jié)果:
 * 等待超時(shí)-TimeoutException
 * A同學(xué)得到了null
 */

到此這篇關(guān)于Java并發(fā)編程之Exchanger方法詳解的文章就介紹到這了,更多相關(guān)Java并發(fā)編程Exchanger內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

彭山县| 吉林市| 老河口市| 突泉县| 镇平县| 高州市| 隆昌县| 菏泽市| 惠安县| 鄄城县| 调兵山市| 黄大仙区| 华宁县| 顺昌县| 忻州市| 安陆市| 仙游县| 万山特区| 宣恩县| 阿城市| 安塞县| 邯郸市| 石城县| 兴宁市| 晋城| 东宁县| 游戏| 临清市| 靖边县| 高碑店市| 大庆市| 霍州市| 密云县| 漳州市| 巨鹿县| 新丰县| 防城港市| 纳雍县| 平原县| 乡宁县| 德庆县|