【併發編程】【JDK源碼】JDK的(J.U.C)java.util.concurrent包結構

本文從JDK源碼包中截取出concurrent包的全部類,對該包總體結構進行一個概述。
JDK1.5以前,Java中要進行併發編程時,一般須要由程序員獨立完成代碼實現。固然也有一些開源的框架提供了這些功能,可是這些框架依然沒有JDK自帶的功能使用起來方便。html

而當針對高質量Java多線程併發程序設計時,好比使用Java以前的wait()notify()synchronized等,須要考慮性能、死鎖、公平性、資源管理以及如何避免線程安全性方面帶來的危害等諸多因素,每每會採用一些較爲複雜的安全策略,加劇了程序員的開發負擔。java

萬幸的是,在JDK1.5出現以後,Sun大神(Doug Lea)推出了java.util.concurrent工具包以簡化併發完成。開發者們藉助於此,將有效的減小競爭條件(race conditions)和死鎖線程。concurrent包很好的解決了這些問題,爲咱們提供了更實用的併發程序模型。程序員

JDKjava.util.concurrent包,包含兩個子包atomiclocks面試

java.util.concurrent.atomic

atomic包含原子類。
編程

java.util.concurrent.locks

locks包包含鎖相關的類,如lock、condition等
安全

java.util.concurrent

concurrent包下包含一些併發工具類,如Executors、Semaphore、CountDownLatch、CyclicBarrier、BlockingQueue等。
多線程

J.U.C的五大核心

上面是JDK源碼中的concurrent包的結構,下面根據使用場景對J.U.C進行了分類。J.U.C核心由5大塊組成:atomic包、locks包、collections包、tools包(AQS)、executor包(線程池)。
注意,此處的包是按使用邏輯分類的,不是實際的代碼結構。併發

參考資料:
java的concurrent用法詳解
java.util.concurrent包源碼分析
閱讀jdk源碼
面試中併發類問題的準備和學習框架

相關文章
相關標籤/搜索