官术网_书友最值得收藏!

1.2.1 方法exchange()阻塞的特性

類Exchanger中的exchange()方法具有阻塞的特色,也就是此方法被調(diào)用后等待其他線程來取得數(shù)據(jù),如果沒有其他線程取得數(shù)據(jù),則一直阻塞等待。

創(chuàng)建測試用的項(xiàng)目Exchanger_1,創(chuàng)建類ThreadA.java代碼如下:


        package extthread;
        import java.util.concurrent.Exchanger;
        public class ThreadA extends Thread {
            private Exchanger<String> exchanger;
            public ThreadA(Exchanger<String> exchanger) {
                super();
                this.exchanger = exchanger;
            }
            @Override
            public void run() {
                try {
                    System.out.println("在線程A中得到線程B的值=" + exchanger.exchange("中國人A"));
                    System.out.println("A end! ");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

運(yùn)行類Run.java代碼如下:


        package test.run;
        import java.util.concurrent.Exchanger;
        import extthread.ThreadA;
        public class Run {
            public static void main(String[] args) {
                Exchanger<String> exchanger = new Exchanger<String>();
                ThreadA a = new ThreadA(exchanger);
                a.start();
                System.out.println("main end! ");
            }
        }

程序運(yùn)行效果如圖1-29所示。

圖1-29 出現(xiàn)阻塞效果

主站蜘蛛池模板: 雅江县| 鹤壁市| 祁阳县| 五大连池市| 绥化市| 修文县| 苍溪县| 广安市| 库车县| 蒲城县| 思南县| 高州市| 襄城县| 巴林右旗| 喀喇| 临清市| 四子王旗| 会宁县| 西乌珠穆沁旗| 望江县| 油尖旺区| 兴业县| 岳西县| 金寨县| 仁布县| 昆明市| 新民市| 固安县| 南投县| 嘉黎县| 成都市| 兴仁县| 耒阳市| 松江区| 宽城| 西昌市| 太湖县| 龙泉市| 班玛县| 南溪县| 萍乡市|