并发编程 概括

基本概念和原理

进程和线程

操作系统的进程和线程

java中的进程和线程

java的线程实现

java线程实现是使用的内核线程的实现:https://blog.csdn.net/aajjw/article/details/115713556

为什么我们需要线程?

多线程为啥效率高?一定效率高吗?

并发和并行

同步和异步 与 阻塞和非阻塞

java线程

java线程相关的API

  • 创建线程的几种方式
  • java线程的中断机制

java线程状态及其转化

synchronized

  • synchronized语法
  • synchronized原理
  • synchronized锁优化
    • 锁升级
    • 自适应自旋
    • JIT - 逃逸分析,锁消除
    • JIT - 锁粗化
  • 使用synchronized和wait、notify/notifyAll实现阻塞队列

volitile

volitile保证数据的可见性,不能保证原子性和有序性
参考:深入理解java虚拟机
参考:https://www.cnblogs.com/dolphin0520/p/3920373.html

JMM

  • 缓存一致性协议
  • JMM-java内存模型
    • 原子性
    • 可见性
    • 有序性

ThreadLocal

多线程

多线程编程

  • 线程的常见操作。创建,运行,暂停,销毁,让步,停止,中断信号,等待,唤醒等
  • 多线程数据竞争问题,锁:sync关键字,Lock
  • 多线程“流程控制”,同步点(如Semaphore)
  • 多线程数据交换与共享

线程安全

参考:深入理解java虚拟机

  • 不可变
  • 绝对线程安全
  • 相对线程安全
  • 线程兼容
  • 线程对立

多线程下JDK7 HashMap循环链表问题

JUC

CAS

  • CAS是JUC的基石
  • CAS思想
  • CAS需要CPU指令集支持,java在Unsafe中封装了CAS操作

Atomic

分类

  • AtomicBoolean,AtomicInteger,AtomicLong,AtomicReference // CAS不防止ABA
  • AtomicIntegerArray,AtomicLongArray ,AtomicReferenceArray //针对数组中的元素进行原子操作
  • AtomicLongFieldUpdater,AtomicIntegerFieldUpdater,AtomicReferenceFieldUpdater //Field是针对不是自己创建的类,构造原子类,实现原子操作
  • AtomicMarkableReference,AtomicStampedReference //版本号,防止ABA

AtomicInteger常用方法

原理

使用CAS指令,使用自旋操作代替悲观锁

Lock

  • LockSupport:用于创建锁和其他同步类的基本线程阻塞原语
  • AQS:队列同步器,是很多JUC类的基础,使用CAS和LockSupport
  • ReentrantLock:可重入互斥锁
  • ReentrantReadWriteLock:可重入读写锁,读读不互斥
  • StampedLock:可重入读写锁,读写不互斥

BlockingQueue

  • Queue
  • Deque
  • BlockingQueue
    • ArrayBlockingQueue 数组实现的环形阻塞队列,有容量限制。使用了ReentrantLock和Condition
    • LinkedBlockingQueue 单向链表的阻塞队列
    • PriorityBlockingQueue 优先级阻塞队列
    • DelayQueue 延时队列
    • SynchronousQueue 同步阻塞队列
  • BlockingDeque

线程池

  • 池化技术
  • ThreadPoolExector
    • 7个参数,其中有一个BlockingQueue
    • 线程池模型,线程池状态及线程池API
    • 调度策略
      • 线程池初始化时是否始化线程?
      • 我们将任务提交到线程池时,线程池如何执行?
      • 线程池的正确的关闭
    • 源码分析
  • ScheduledThreadPoolExecutor
  • ForkJoinPool

线程通信类

  • Semaphore:信号量
  • CountDownLatch:“倒计数器”
  • CyclicBarrier:循环屏障,篱栅
  • Phaser:阶段转移器
  • Exchanger:交换器

集合类并发处理

  • Collections.synchronizedXxx
  • CopyOnWrite
    • CopyOnWriteArrayList
    • CopyOnWriteArraySet
  • Concurrent
    • ConcurrentLinkedQueue
    • ConcurrentLinkedDeque
    • ConcurrentHashMap
    • ConcurrentSkipListMap
    • ConcurrentSkipListSet

并发编程

NIO,IO多路复用

集合的并行处理 parallelStream

算法的并行处理,如排序算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值