黑馬程式員 日記三:線程同步工具總結

來源:互聯網
上載者:User

---------------------- android培訓、java培訓、期待與您交流!
----------------------

一、Semaphore號誌

查閱API文檔,Semaphore繼承自Object類,實現了Serializable介面。

Semaphore的特點是:能夠控制同時訪問資源的線程的個數,並且形成並非訪問資源。

Semaphore的主要操作:該類有兩個構造方法,Semaphore(int permits) 和Semaphore(int permits, boolean fair) ,前者參數permits表示可同時訪問資源的最大線程數,後者多了一個布爾型參數fair,當值為true時,保證多個線程能夠實現先進先出,其他的主要方法是acquire()和release()方法,分別用來為線程分配許可權和釋放許可權。

二、CyclicBarrier

CyclicBarrier繼承自Object類。

構造方法有兩種,CyclicBarrier(int parties) 和CyclicBarrier(int parties, Runnable barrierAction) ,其中的參數parties表示所需等待的線程數,barrierAction表示,當線程完成等待後,需要進行的操作。

CyclicBarrier主要操作有await(),當執行該方法時候,每個線程執行到await()語句時,會等待,直到所等待的線程數量與建構函式中的parties參數相等時候,會繼續向下執行。

三、CountDownLatch

CyclicBarrier繼承自Object類。

該類只有一種構造方法,CountDownLatch(int count) ,其中參數count表示倒計時的次數。

主要的操作有await()和CountDown(),前者表示線程在等待,而由後者倒數,當倒數了count次後,等待的線程開始繼續向下執行。

四、Exchanger

繼承自Object類。

該類構造方法只有一種,Exchanger() 。

主要操作有exchange(V x) 和exchange(V x, long timeout, TimeUnit unit) ,前者是除非線程被打斷,否則等待另外一個線程進入交換點交換資料;後則,則加上了時間的限制,若超出時間限制,便不再等待。

---------------------- android培訓、java培訓、期待與您交流!
----------------------

詳細請查看:http://edu.csdn.net/heima

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.