Java中的CyclicBarrier
/CountDownLatch
和join
有什麼區別? CyclicBarrier
和CountDownLatch
的優點是什麼?在我看來,只需使用join
我們可以等待一個線程完成其執行。CyclicBarrier/CountDownLatch和Java中的連接有什麼區別?
回答
是,「t.join()」,使當前線程等待「T」線結束,當一個線程在等待其他一些我們可以編寫線程鏈。但有時CountDownLatch/CyclicBarrier更方便。
首先,CountDownLatch /的CyclicBarrier不要求所有工作線程應該結束了。線程可以在應用程序運行的所有時間運行。他們只是讓我們說「一些工作」已經做了很多次了。此外,如果我們有N個作業和M個線程並且N> M,則某些線程可以多次執行任務,直到它們的通用Barier N爲0爲止。此示例顯示CountDownLatch/CyclicBarrier是在M個線程之間共享N個任務的非常有用的基元。
此外,使用join()方法,每個線程都應該有另一個線程的引用調用join()方法。它使你的代碼有點骯髒,特別是當你有超過2個工作線程時。共享一個CountDownLatch/CyclicBarrier實例看起來更清晰。
的CyclicBarrier和CountDownLatch之間的主要區別是,的CyclicBarrier是可重複使用的和CountDownLatch不是。您可以通過調用reset()方法來重新使用CyclicBarrier,該方法將屏障重置爲其初始狀態。
CountDownLatch是良好的像應用程序/模塊的啓動時間和一個的CyclicBarrier時間事件可以在複發性事件的情況下例如可以用於每次輸入數據改變時同時(重新)計算。
你可以找到一些很好的例子:
http://javarevisited.blogspot.sg/2012/07/countdownlatch-example-in-java.html http://javarevisited.blogspot.ru/2012/07/cyclicbarrier-example-java-5-concurrency-tutorial.html
join()
等待一個線程完成。 CountDownLatch.await()
允許N個線程等待,直到倒計數達到0.它可以用來確保N個線程同時開始執行某些操作(例如開始比賽),或者在N個線程到達給定的時間後喚醒另一個線程點(比賽結束,例如)。
The javadoc給出了使用CountDownLatch的一個具體的例子。閱讀。
CyclicBarrier與CountDownLatch類似,但允許定期協調點。
- 1. 範圍和連接有什麼區別?
- 2. ,和+連接時有什麼區別?
- 3. Tomcat的BIO連接器和NIO連接器有什麼區別?
- 4. MySQL中的套接字和端口連接有什麼區別?
- 5. 內連接和外連接有什麼區別
- 6. 散列連接和合並連接(Oracle RDBMS)有什麼區別?
- 7. 插座連接和動作連接有什麼區別?
- 8. 左連接和左外連接有什麼區別?
- 9. 反連接和反半連接有什麼區別?
- 10. 是什麼左邊的區別連接和MySQL中右連接
- 11. `|。有什麼區別? `和`|| `在java中?
- 12. Java中boolean和Boolean有什麼區別?
- 13. java中float和float有什麼區別?
- 14. !=和=!有什麼區別!在Java中?
- 15. Java中> =和=>有什麼區別?
- 16. Mysql的表連接中的「using」和「on」有什麼區別?
- 17. 左外連接 - 有什麼區別?
- 18. SocketConnection與DCOM連接有什麼區別
- 19. **/*。java和* .java有什麼區別?
- 20. `java -version`和`java -showversion`有什麼區別?
- 21. java 1.5和java 1.6有什麼區別
- 22. cogroup和PIG中的連接有什麼區別?
- 23. pg_hba.conf中的「local」和「localhost」連接類型有什麼區別?
- 24. MySql連接器/ J中的autoReconnect和autoReconnectForPools有什麼區別?
- 25. 套接字的連接和讀取超時有什麼區別?
- 26. IncomingMessage的「套接字」,「連接」和「connection.socket」有什麼區別?
- 27. 逗號分隔的連接和MySQL中的語法連接有什麼區別?
- 28. Java中的公共和私人接口有什麼區別
- 29. Linq:在連接中==和equals有什麼區別?
- 30. mysql中'where'和不同'連接'有什麼區別?
是的,你可以解決許多情況下簡單地加入,但使用CountDownLatch或的CyclicBarrier,使得它更容易。 – Pshemo