[JAVA学习笔记-85]java的concurrent包的整体认识

xiaoxiao2021-02-28  91

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
转载请注明原文地址: https://www.6miu.com/read-76973.html

最新回复(0)