java並發編程之Exchanger

來源:互聯網
上載者:User

標籤:java   並發編程   exchanger類   

Exchanger<V>
V - 可以交換的物件類型

可以在對中對元素進行配對和交換的線程的同步點。每個線程將條目上的某個方法呈現給 exchange 方法,與夥伴線程進行匹配,並且在返回時接收其夥伴的對象。Exchanger 可能被視為 SynchronousQueue 的雙向形式。Exchanger 可能在應用程式(比如遺傳演算法和管道設計)中很有用。

這個實現的是兩個線程之間的一個資訊交流

public class TestExchanger {    public static void main(String[] args)     {        System.out.println("Hello World!");        final Exchanger<List<Integer>> exchanger = new Exchanger<List<Integer>>();        new Thread(){            @Override            public void run(){                List<Integer> l = new ArrayList<Integer>();                l.add(1);                l.add(2);                try{                    System.out.println(Thread.currentThread().getName()+":"+l);                    l = exchanger.exchange(l);                }catch(InterruptedException ex){                    ex.printStackTrace();                }                System.out.println(Thread.currentThread().getName()+":"+l);            }        }.start();        new Thread(){            @Override            public void run(){                List<Integer> l = new ArrayList<Integer>();                l.add(3);                l.add(4);                try{                    System.out.println(Thread.currentThread().getName()+":"+l);                    Thread.sleep(2000);                    l = exchanger.exchange(l);                }catch(InterruptedException ex){                    ex.printStackTrace();                }                System.out.println(Thread.currentThread().getName()+":"+l);            }        }.start();    }}

添加一個Thread.sleep()之後就會發現,兩個線程交換資訊結束才能同時向下執行

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

java並發編程之Exchanger

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.