門閂CountDownLatch

掛多把鎖,當(dāng)所有的鎖都釋放掉后 才執(zhí)行

  • 可以和鎖混合使用,或替代鎖的功能。
  • 在門閂未完全開放之前等待。當(dāng)門閂完全開放后執(zhí)行。
  • 避免鎖的效率低下問題。

一般用于有前后順序的地方 ,比如spring 容器初始化,要先初始化什么 再初始化什么,然后在做什么事情; 每次做完一件事后 就減(釋放)去一把鎖

public class TestSync { 
    
    //門閂 相當(dāng)于 掛5把鎖 ,當(dāng)這5把鎖一次都 釋放時 才執(zhí)行
    CountDownLatch latch = new CountDownLatch(5);
    
    void m1() {
        try {
            latch.await(); //等待 門閂上的 鎖 全部釋放
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    
    void m2() {
        for (int i = 0; i < 10; i++) { //循環(huán)釋放鎖
            if(latch.getCount()!=0) {  // 不等于0 也就是說 還有鎖
                latch.countDown();//釋放一把鎖
                System.out.println("m1(執(zhí)行了)");
            }
        }
    }
    
    public static void main(String[] args) {
        TestSync t = new TestSync();
        new Thread(new Runnable() {

            @Override
            public void run() {
                t.m1(); //第一個線程 先執(zhí)行m1() 需要等待 5把鎖開放
            }
            
        }).start();
        
        new Thread(new Runnable() {
            @Override
            public void run() {
                t.m2();
            }
        }).start();
        
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容