Java并发包梳理

 

1.容器

接口:BlockingDeque(双端队列),BlockingQueue,ConcurrentMap,

ConcurrentNavigableMap:有序的map,可以按照key进行范围操作,获取正反序视图,获取子集等等。key按照Comparator或key的自然顺序(实现的Comparable接口)进行排序。

 

类:

ArrayBlockingQueue:以数组为基础的线程安全的有界队列,通过ReentrantLock实现线程安全

ConcurrentHashMap:1.8之前采用数据分段,对分段进行锁来实现(ReentrantLock+Segment数组+链表);

1.8后引入红黑树,采用cas实现线程安全(synchronized+CAS+数组+链表+红黑树)

ConcurrentLinkedDeque:双向链表结构的线程安全的无界双端队列(CAS)

ConcurrentLinkedQueue:链表结构的线程安全的无界队列(CAS)

ConcurrentSkipListMap:ConcurrentNavigableMap的实现,key有序的map。

ConcurrentSkipListSet:NavigableSet的实现,有序的Set。

CopyOnWriteArrayList:

CopyOnWriteArraySet:

 

 

 

2.锁

 

 

3.流程控制

接口:

Callable:相较于Runnable,Callable有结果返回,但要配套Future使用。

CompletionService:(外部将多个新任务投入CompletionService,CompletionService执行完后,会放入内部的一个blockingqueue,外部通过CompletionService的take接口获取执行后的结果,take获取到的任务按执行完成顺序排列) 

CompletionStage:通过CompletionStage可以将一系列异步操作按顺序执行,下一步操作可以接收上一步的执行结果。CompletionFuture是现阶段唯一的实现类。

Delayed:标识一个延迟任务。

Future:代表一个异步操作的结果。

RunnableFuture:继承了Runnable和Future,能被扔到线程中当任务被执行,也能作为执行结果返回。

RunnableScheduledFutrue:一个可延迟的RunnbaleFuture。

ScheduledFuture:通常作为ScheduledExecutorService的执行结果。

 

 

 

 

 

4.线程池

接口:

Executor:接收并执行Runnable对象。

ExecutorService:Executor的子接口,在父接口基础上添加了管理接口。

RejectedExecutionHandler:用来处理ThreadPoolExecutor无法处理的任务。 

ScheduledExecutorService:一个支持延迟和周期性执行任务的ExecutorService。

ThreadFactory:线程工厂。

 

类:

AbstractExecutorService

 

posted @ 2019-09-04 18:14  PaganMonkey  阅读(214)  评论(0编辑  收藏  举报

喜欢的话可以打赏一下哦!!!

支付宝

微信