java doc的描述有两个分类,interface summary与Class summary。
一、根据接口来大致归类
在这里,借用族的概念,来大致划分接口的归属,相同族的接口,归属于与其相关的核心接口
1、Blocking queue族
BlockingDeque<E>
BlockingQueue<E>
Delayed
TransferQueue<E>
2、Executor族
Executor
ExecutorService
Callable<V>
Future<V>
RejectedExecutionHandler 【A handler for tasks that cannot be executed by a ThreadPoolExecutor.】
RunnableFuture<V>
RunnableScheduledFuture<V>
ScheduledExecutorService
ScheduledFuture<V>
ThreadFactory
3、Concurrent collections族
ConcurrentMap<K,V>
ConcurrentNavigableMap<K,V>
4、ForkJoin族
ForkJoinPool.ForkJoinWorkerThreadFactory
ForkJoinPool.ManagedBlocker
Future<V>
ThreadFactory
5、其它
CompletionService<V>
综述:
concurrent collections相对来说比较独立,Executor是最重要的接口,从Executor框架派生出了ForkJoin框架,而BlockingQueue充当
了Executor的threadpool的任务队列,选择不同的BlockingQueue可以影响threadpool的行为。BlockingQueue在生产者-消费者的线程模型中
处于核心地位。BlockingQueue也是Executor框架的核心组件之一。
CompletionService 是一个工具,用来保存一组任务运行完成后,返回的Future<V>对象,这些Future保存在BlockingQueue里,需要获取
任务返回结果(Result)的线程(consumer)使用 CompletionService 的 take 方法获取这些Future。
二、根据Class来大致分类
1、concurrent collections
ConcurrentHashMap<K,V>
[适用修改多,读少的场景,相比SynchronizedMap因为无锁而性能优,但无法保证数据一致性]
ConcurrentLinkedDeque<E>
ConcurrentLinkedQueue<E>
ConcurrentSkipListMap<K,V>
ConcurrentSkipListSet<E>
CopyOnWriteArrayList<E> [适用遍历多,修改少的场景]
CopyOnWriteArraySet<E>
2、BlockingQueue
ArrayBlockingQueue<E>
DelayQueue<E extends Delayed>
LinkedBlockingDeque<E>
LinkedBlockingQueue<E>
LinkedTransferQueue<E>
PriorityBlockingQueue<E>
SynchronousQueue<E>
3、ForkJoin
ForkJoinPool
ForkJoinTask<V>
ForkJoinWorkerThread
RecursiveAction [A recursive resultless ForkJoinTask.]
RecursiveTask<V> [A recursive result-bearing ForkJoinTask.]
4、Executors
AbstractExecutorService
ExecutorCompletionService<V>
[A CompletionService that uses a supplied Executor to execute tasks.]
Executors
FutureTask<V>
ScheduledThreadPoolExecutor
ThreadPoolExecutor
ThreadPoolExecutor.AbortPolicy
ThreadPoolExecutor.CallerRunsPolicy
ThreadPoolExecutor.DiscardOldestPolicy
ThreadPoolExecutor.DiscardPolicy
5、synchronizers
CountDownLatch
CyclicBarrier
Phaser
[provides a more flexible form of barrier that may be used to control phased computation among multiple threads.]
Semaphore
Exchanger<V> [A synchronization point at which threads can pair and swap elements within pairs.]
6、其它
ThreadLocalRandom
TimeUnit