Java5新出的concurrent包中的API,是一些併發編程中實用的的工具類。在高併發場景下的使用很是普遍。筆者在這作了一個針對concurrent包中部分經常使用類的源碼分析系列。本系列針對的讀者是已經對併發包中的Executor框架和工具類有所瞭解並懂得如何使用的人羣,若是對併發包還不瞭解的朋友,請先作些瞭解。網上對這方面的講述有豐富的資源。編程
本篇博文是第一期,首先對Executor架構作一個概述。這裏只簡單介紹接口和類的繼承、使用關係。架構
盜用一張類圖來描述結構:併發
此外,CompletionService接口能夠認爲是Executor的一個分支,注意這裏CompletionService並非Executor的子接口,上圖可能會讓部分讀者產生歧義。CompletionService是用來將生產新的異步任務與使用已完成任務的結果分離開來的服務。基於Executor的任務執行,與Future搭配使用。框架
對Executor框架的結構作了簡單的描述以後,接下來就要進入源碼解析的正篇部分了。這裏筆者計劃重點對框架中的ThreadPoolExecutor、FutureTask及一些工具類如Exchanger、CountDownLatch、CyclicBarrier、Semaphore和幾個經常使用的併發集合如ArrayBlockingQueue、ConcurrentLinkedQueue、ConcurrentHashMap、CopyOnWriteArrayList作分析。異步
一我的的理解不免有片面和遺漏,還望各位海涵和指正。高併發