Java并发编程
2025-06-06 20:54:53 0 举报
AI智能生成
java并发思维导图
作者其他创作
大纲/内容
线程运行模型
并行
多CPU同时执行
并发
线程上下文切换
串行
单CPU单线程执行
线程基础
线程 & 进程
进程是CPU资源分配最小单位
线程是CPU调度最小单位
Java线程生命周期
https://www.processon.com/view/link/6842dbd5590f390f1bfd8b69?cid=660eb99829f2984bc2b7f64a
Thread类方法
start
sleep
join
yield
interupt
Java线程中断机制
interrupt
isInterrupted
interrupted
sleep,await方法会捕获InterruptedException
Java线程间通信
volatile
等待唤醒机制
cas + park/unpark
sychronized + wait/notify/notifyAll
reentrantLock + Condition(await/signal/signalAll)
Thread.join
线程插队
JMM(共享内存模型)
并发编程三大特性
可见性
通过总线锁/缓存锁+缓存一致性协议解决可见性问题
缓存一致性协议优化方案及带来新的可见性问题
有序性
CPU在保证单线程逻辑执行无误的情况下, 适当调整代码顺序, 已达到更优的执行效率
原子性
volatile原理
可以解决线程问题包括
可见性问题
通过lock前缀指令 + mesi协议解决
有序性问题
通过内存屏障解决
cas原理
比较和交换, 利用跟预期值对比, 如果预期值跟内存中的值相等, 则内存值替换为指定值
happens-before原理
CPU高速缓存架构
多种缓存一致性协议(MESI)
伪共享问题
缓存行(默认64Byte)
锁
sychronized
隐式锁
代码块加锁
加锁对象为小括号指定的对象
monitorEnter
monitorExit
静态方法上加Sychronized
加锁对象是当前类对象
成员方法加Sychronized
加锁对象为当前实例(this)
jdk1.6优化
锁升级
锁消除
锁粗化
reentrantLock
state
AbstractQueueSynchronize
显示锁
公平与非公平
可重入
CHL队列
Condition
LockSupport
可中断锁
可尝试获取锁
线程安全问题
分类
运行结果错误
活跃性问题(死锁,饥饿,活锁)
死锁
死锁是指两个线程之间相互等待对方资源,但同时又互不相让,都想自己先执行
饥饿
饥饿是指线程需要某些资源时始终得不到,尤其是CPU 资源,就会导致线程一直不能运行而产生的问题。
活锁
活锁指的是线程一直占用锁执行不完, 相对于死锁来说, 活锁不阻塞. 比如线程拿到锁后, 执行出错, 然后又重试.
对象发布和初始化
线程安全问题解决方案
无锁
局部变量
不可变对象
final关键字
线程隔离
ThreadLocal
cas
atomic原子类
有锁
synchronized
Lock
AQS实现
ReentrantLock
ReentrantReadWriteLock
StampedLock
锁分类
线程是否需要抢占临界资源
需要
悲观锁
不需要
乐观锁
是否需要等待锁过程
自旋锁
非自旋锁
是否可中断
可以
可中断锁
不可以
不可中断锁
是否同一个线程可以多次获取同一把锁
可重入锁
不可重入锁
多个线程竞争一把锁时, 是否按线程先到顺序获取锁
公平锁
非公平锁
多线程是否可以共享同一把锁
共享锁
独占锁
synchronized锁竞争程度
偏向锁
轻量级锁
重量级锁
并发工具类
atomic工具类
AtomicInteger、AtomicLong、AtomicBoolean
AtomicReference、AtomicStampedRerence、AtomicMarkableReference
AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
DoubleAccumulator、DoubleAdder、LongAccumulator、LongAdder、Striped64
线程池
ThreadPoolExecutor
ScheduledThreadPoolExecutor
线程协作
CountDownLatch
Semaphore
CyclicBarrier
Exchanger
Phaser
并发容器
Map
ConcurrentHashMap
ConcurrentSkipListMap
List
CopyOnWriteArrayList
Set
CopyOnWriteArraySet
ConcurrentSkipListSet
BlockingQueue
ArrayBlockingQueue
LinkBlockingQueue
SynchonousQueue
PriorityBlockQueue
DelayQueue
异步编程Future
FutureTask
CompletableFuture
并行框架Fork/Join
ForkJoinPool
ForkJoinTask
0 条评论
下一页