一文帶你理解java中的同步工具類CountDownLatch
一、定義 CountDownLatch的作用很簡單,就是一個或者一組線程在開始執行操作之前,必須要等到其他線程執行完才可以。我們舉一個例子來說明,在考試的時候,老師必須要等到所有人交了試卷才可以走。此時老師就相當於等待線程,而學生就好比是執行的線程。 注意:java中還有一個同步工具類叫做CyclicBarrier,他的作用和CountDownLatch類似。同樣是等待其他線程都完成了,才可以進行下一步操作,我們再舉一個例子,在打王者的時候,在開局前所有人都必須要加載到100%才可以進入。否則所有玩家都相互等待。 我們看一下區別:CountDownLatch: 一個線程(或者多個), 等待另外N個線程完成某個事情之後才能執行。 CyclicBarrier : N個線程相互等待,任何一個線程完成之前,所有的線程都必須等待。關鍵點其實就在於那N個線程(1)CountDownLatch裡面N個線程就是學生,學生做完了試卷就可以走了,不用等待其他的學生是否完成(2)CyclicBarrier 裡面N個線程就是所有的遊戲玩家,一個遊戲玩家加載到100%還不可以,必須要等到其他的遊戲玩家都加載到100%才可以開局 現在應該理解CountDownLatch的含義了吧,下面我們使用一個代碼案例來解釋。 二、使用 我們使用學生考試的案例來進行演示: public class CountDownLatchTest { static CountDownLatch countDownLatch = […]