第 5-6 课:Java 并发包中的高级同步工具 + 面试题
生活随笔
收集整理的這篇文章主要介紹了
第 5-6 课:Java 并发包中的高级同步工具 + 面试题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Java 中的并發(fā)包指的是 java.util.concurrent(簡稱 JUC)包和其子包下的類和接口,它為 Java 的并發(fā)提供了各種功能支持,比如:
- 提供了線程池的創(chuàng)建類 ThreadPoolExecutor、Executors 等;
- 提供了各種鎖,如 Lock、ReentrantLock 等;
- 提供了各種線程安全的數(shù)據(jù)結(jié)構(gòu),如 ConcurrentHashMap、LinkedBlockingQueue、DelayQueue 等;
- 提供了更加高級的線程同步結(jié)構(gòu),如 CountDownLatch、CyclicBarrier、Semaphore 等。
在前面的章節(jié)中我們已經(jīng)詳細(xì)地介紹了線程池的使用、線程安全的數(shù)據(jù)結(jié)構(gòu)等,本文我們就重點(diǎn)學(xué)習(xí)一下 Java 并發(fā)包中更高級的線程同步類:CountDownLatch、CyclicBarrier、Semaphore 和 Phaser 等。
CountDownLatch 介紹和使用
CountDownLatch(閉鎖)可以看作一個(gè)只能做減法的計(jì)數(shù)器,可以讓一個(gè)或多個(gè)線程等待執(zhí)行。
CountDownLatch 有兩個(gè)重要的方法:
- countDown():使計(jì)數(shù)器減 1;
- await():當(dāng)計(jì)數(shù)器不為 0 時(shí),則調(diào)用該方法的線程阻塞,當(dāng)計(jì)數(shù)器為 0 時(shí),可以喚醒等待的一個(gè)或者全部線程。
CountDownLatch 使用場景:
以生活中的情景為例,比如去醫(yī)院體檢,通常人們會提前去醫(yī)院排隊(duì),但只有等到醫(yī)生開始上班,才能正式開始體檢,醫(yī)生也要給所有人體檢完才能下班,這種情況就要使用 Coun
總結(jié)
以上是生活随笔為你收集整理的第 5-6 课:Java 并发包中的高级同步工具 + 面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查询附近的人——GEO
- 下一篇: java美元兑换,(Java实现) 美元