同步輔助類CountDownLatch的例子

21ca發表於2009-08-11
就是使用一個計數器作為鎖。在專案中遇到這樣一種情形,要處理一批訂單,處理完成之後需要報告成功多少,失敗多少。為了採用多執行緒機制,即每個訂單啟動一個執行緒(用執行緒池管理),當所有訂單完成之後,還要通知主執行緒進行統計報告,就想到了CountDownLatch。

下面是一個簡單的例子。

import java.util.concurrent.CountDownLatch;

public class CountDownLatchTest {
   
    static class SimpleThread extends Thread {

        private CountDownLatch latch;

        public SimpleThread(CountDownLatch latch){
            this.latch = latch;
        }
       
        @Override
        public void run() {
            System.out.println(this + " RUNNING.");
            latch.countDown();
        }
       
    }

    public static void main(String[] args) throws InterruptedException {
        CountDownLatch latch = new CountDownLatch(5);
       
        for(int i=0; i<5; i++) {
            new SimpleThread(latch).start();
        }
       
        //等待所有子執行緒處理完成。
        latch.await();
        System.out.println("Over");
    }
}

執行結果:
Thread[Thread-2,5,main] RUNNING.
Thread[Thread-0,5,main] RUNNING.
Thread[Thread-1,5,main] RUNNING.
Thread[Thread-4,5,main] RUNNING.
Thread[Thread-3,5,main] RUNNING.
Over

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10742815/viewspace-611904/,如需轉載,請註明出處,否則將追究法律責任。

相關文章