Java5新出的concurrent包中的API,是一些并发编程中实用的的工具类。在高并发场景下的使用非常广泛。笔者在这做了一个针对concurrent包中部分常用类的源码分析系列。本系列针对的读者是已经对并发包中的Executor框架和工具类有所了解并懂得如何使用的人群,如果对并发包还不了解的朋友,请先做些了解。网上对这方面的讲述有丰富的资源。
本篇博文是第一期,首先对Executor架构做一个概述。这里只简单介绍接口和类的继承、使用关系。
盗用一张类图来描述结构:
此外,CompletionService接口可以认为是Executor的一个分支,注意这里CompletionService并不是Executor的子接口,图中有些歧义。CompletionService是用来将生产新的异步任务与使用已完成任务的结果分离开来的服务。与Future搭配使用。
对Executor框架的结构做了简单的描述之后,接下来就要进入源码解析的正篇部分了。这里笔者计划重点对框架中的ThreadPoolExecutor、FutureTask及一些工具类如Exchanger、CountDownLatch、CyclicBarrier、Semaphore和几个常用的并发集合如ArrayBlockingQueue、ConcurrentLinkedQueue、ConcurrentHashMap、CopyOnWriteArrayList做分析。
一个人的理解难免有片面和遗漏,还望各位海涵和指正。