閉鎖

一種同步工具類,可以延遲線程的進(jìn)度直到閉鎖的值等于0(終止?fàn)顟B(tài))
可用于在執(zhí)行一個(gè)任務(wù)前,必須把這個(gè)任務(wù)前的全部完成,才能執(zhí)行這個(gè)任務(wù)。
比如,游戲要等所有玩家都準(zhǔn)備好之后才開始 所有資源都初始化之后才開始加載類。

t.start();啟動(dòng)線程后繼續(xù)向下執(zhí)行,不過線程會(huì)在startGate.await();的地方等待

    public long timeTasks(int nThreads, final Runnable task)
            throws InterruptedException {
        final CountDownLatch startGate = new CountDownLatch(1);
        final CountDownLatch endGate = new CountDownLatch(nThreads);

        for (int i = 0; i < nThreads; i++) {
            Thread t = new Thread() {
                public void run() {
                    try {
                        //所有線程啟動(dòng)后,都會(huì)在這個(gè)地方等待startGate閉鎖等于0  
                        startGate.await();
                        try {
                            //雖然是實(shí)現(xiàn)了runnable 不過task.run()不會(huì)啟動(dòng)線程 和執(zhí)行普通方法一樣
                            task.run();
                        } finally {
                            //每一個(gè)線程執(zhí)行任務(wù)之后,countdown
                            endGate.countDown();
                        }
                    } catch (InterruptedException ignored) {
                    }
                }
            };
            t.start();
        }

        long start = System.nanoTime();
        //打開閉鎖  startGate
        startGate.countDown();
        //等待endGate閉鎖等0之后,繼續(xù)向下執(zhí)行
        endGate.await();
        long end = System.nanoTime();
        return end - start;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • CountDownLatch閉鎖是一種同步工具類 可以延遲線程的進(jìn)度直到閉鎖到達(dá)終止?fàn)顟B(tài)。Latch在英語中就是門...
    賈歌閱讀 408評論 0 0
  • 閉鎖 閉鎖是一種同步工具類,可以延遲線程的進(jìn)度直到線程到達(dá)終止?fàn)顟B(tài)??梢杂糜诖_保某些活動(dòng)直到其他活動(dòng)都完成后繼續(xù)執(zhí)...
    甚了閱讀 344評論 0 0
  • CountDownLatch 閉鎖可以使一個(gè)或多個(gè)線程等待一組事件的發(fā)生,內(nèi)部的計(jì)數(shù)器記錄了事件的數(shù)量。兩個(gè)主要的...
    Cafebaby閱讀 1,084評論 0 2
  • 閉鎖是一種同步工具類,可以延遲線程的進(jìn)度直到其到達(dá)終止?fàn)顟B(tài)。 CountDownLatch是一種靈活的閉鎖實(shí)現(xiàn),它...
    卡巴拉的樹閱讀 2,340評論 0 4
  • 昨晚回家路上,一小男孩,小學(xué)生模樣,見到ofo單車,就按開鎖鍵,開不開就嘗試轉(zhuǎn)動(dòng)第一個(gè)密碼,試兩次,仍然開不了,然...
    末之說閱讀 334評論 0 0

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