CountDownLatch的使用

package com.example.sina.thread;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CountDownLatchTest {

    public static void main(String[] args) {

        // 醫生
        CountDownLatch hospitalLatch = new CountDownLatch(1);
        // 患者
        CountDownLatch patientLatch = new CountDownLatch(10);

        System.out.println("患者排隊");

        System.out.println("醫生上班");
        
        // 創建一個可緩存的線程池
        ExecutorService executorService = Executors.newCachedThreadPool();

        for (int i = 0; i < 10; i++) {
            final int j = i;
            executorService.execute(() -> {
                try {
                    hospitalLatch.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("體檢:" + j);
                patientLatch.countDown();
            });
        }
        hospitalLatch.countDown();
        try {
            patientLatch.await();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("醫生下班");
        executorService.shutdown();
    }
}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章