并发原子类,集合,工具类

在这里插入图片描述

其它

原子操作

基本类型

  • AtomicInteger
  • AtomicLong
  • AtomicBoolean

数组

  • AtomicIntegerArray
  • AtomicLongArray
  • AtomicReferenceArray

引用类型

  • AtomicReference
  • AtomicReferenceFieldUpdater

其它

  • threadlocal
    • 对象为建,任意对象为值,结构被附带在线程上,一个线程可以根据一个threadlocal对象查询到绑定在这个线程上的值,类维护了一个以当前线程为key的键值对
  • fork/join
    • 用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架
      • 工作窃取算法
      • forkJoinPool
        • forkjointask数组
        • forkjoinworkerThread数组

并发集合

ConcurrentHashMap

  • 其中抛弃了原有的 Segment 分段锁,而采用了 CAS + synchronized 来保证并发安全性。

LinkedBlockingQueue

  • ReentrantLock lock

concurrentLinkedQueue

  • 基于链接节点的无界线程安全队列

线程池

Executor

  • 示意图
    • 子主题 1
  • 组成
    • ThreadPoolExcutor

ThreadPoolExecutor

  • 类型
    • fixedThreadPool
    • singleThreadPoolExcute
    • cacheThreadPOOL
  • corePool
    • 核心线程池大小
  • maximumPool
    • 最大线程池大小
  • BlockingQueue
    • 暂时保存任务的工作队列
  • RejectedExecutionHandler
    • 线程池饱和时,execute调用方法
  • excute

Future Callable

ScheduledExecutorService

线程池架构

  • 子主题 1
    • 子主题 1
      • 如果线程池中的线程数量少于corePoolSize,就创建新的线程来执行新添加的任务
      • 如果线程池中的线程数量大于等于corePoolSize,但队列workQueue未满,则将新添加的任务放到workQueue中
      • 如果线程池中的线程数量大于等于corePoolSize,且队列workQueue已满,但线程池中的线程数量小于maximumPoolSize,则会创建新的线程来处理被添加的任务
      • 如果线程池中的线程数量等于了maximumPoolSize,就用RejectedExecutionHandler来执行拒绝策略

工具类

CyclicBarrier

  • 一组线程到达一个屏障被阻塞,与countdown相比,可以重置

CountDownLatch

  • 一个或者多个线程等待其它线程完成操作

Semaphore

  • 控制访问特定资源的线程数量

exchanger

  • 进行线程间的数据交换

减少上下文切换

无锁并发编程

CAS

使用较少线程

使用协程

  • 英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。最重要的是,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。

XMind: ZEN - Trial Version

猜你喜欢

转载自blog.csdn.net/qq_31443653/article/details/83105962