多线程并发编程脑图
2021-08-25 17:03:37 1 举报
AI智能生成
并发基础,并发工具类,锁,线程通信,线程池,原子操作,内存模型,synchronized
作者其他创作
大纲/内容
并发基础
AQS
AbstractQueuedSynchronizer同步器
队列同步器
getState():获取当前同步状态
setState():设置当前同步状态
compareAndSetState:使用cas设置当前状态,保证原子性
独占方式 获取与释放 同步状态
共享式获取与释放不同状态
查询同步队列等待线程情况
独占式
AQS具备特性
实现方式
同步队列
独占式同步获取与释放
共享式同步获取与释放
CAS
Compare And Swap
缺陷
ABA问题
循环时间长,开销大
只能保证一个共享变量的原子操作
线程间通信
volatile和synchronized关键字
等待/通知
使用wait(),notify()和notifyAll()需要先对对象进行加锁
调用wait()方法后,线程由RUNNING变成WAITING,并将该线程放置等待队列中
notify()和notifyAll()方法调用后,等待线程依旧不会冲wait中返回,需要调用notify()和notifyAll()释放锁之后
notify()方法将等待队列中的一个线程移至到同步队列中,而notifyAll()是所有线程移至同步队列中,线程状态有RUNING变为BLOCKING
从wait方法提前返回是获取了对象锁
Thread.join()
ThreadLocal
场景
并发工具类
CyclicBarrier
应用场景
CountDownLatch
一个线程调用countDown方法happen-before,另外一个线程调用await方法
CyclicBarrier和CountDownLatch的区别
Semaphore
使用场景
锁
ReentrantLock
实现可重入
公平锁
非公平
ReentrantReadWriterlock
volatile
内存语义
volatile特性
volatile写-读内存语义
volatile内存语义实现
volatile机制
锁的内存语义
concurrent包的实现
Lock接口
Condition
Condition的实现
等待队列
等待
通知
LockSupport
其他
ThreadLocal
Fork/Join
Fork/Join的设计
分割任务
执行任务合并结果
Disruptor并发框架
线程通信
共享内存
消息传递
并发集合
ConcurrentHashMap
什么是HashMap
高并发下的HashMap
什么是ConcurrentHashMap
ConcurrentHashMap的结构
ConcurrentHashMap初始化
ConcurrentHashMap允许多个读并发进行?
ConcurrentHashMap的size操作
ConcurrentHashMap get操作
ConcurrentHashMap put操作
ConcurrentLinkedQueue
如何实现一个安全队列?
使用阻塞算法
使用非阻塞算法
ConcurrentLinkedQueue
java中的阻塞队列
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
DelayQueue
使用场景
缓存系统的设计
定时任务调度
SynchronousQueue
LinkedTransferQueue
LinkedBlockingDeque
CopyOnWrite
CopyOnWriteArrayList
CopyOnWriteArraySet
CopyOnWrite 容器介绍
使用场景
黑白名单
读多写少
优缺点
线程池
线程池
ThreadPoolExecutor
构造参数
RejectedExecutionHandler
CallerRunsPolicy
AbortPolicy
DiscardPolicy
DiscardOldestPolicy
keepAliveTime
TimeUnit
runnableTaskQueue
PriorityBlockingQueue
ArrayBlockingQueue
LinkedBlockingQueue
SynchronousQueue
ThreadFactory
种类
FixedThreadPool
SingleThreadExecutor
CachedThreadPool
Callable和Future
ScheduledExecutorService
合理配置线程池
线程池的监控
原子操作
基本类型
AtomicBoolean
AtomicInteger
AtomicLong
数组
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
引用类型
AtomicReference
AtomicReferenceArrayFieldUpdater
原子更新字段类
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicStampedReference
java如何实现原子操作
使用循环CAS实现原子操作
锁
内存模型
重排序
数据依赖性
写一个变量,再读这个变量
写一个变量,再写这个变量
读一个变量,再写这个变量
重排序对多线程的影响
顺序一致性
数据竞争与顺序一致性
顺序一致性内存模型
同步程序的顺序一致性效果
未同步程序的执行特性
happens-beofre
定义
规则
1、程序次序规则:
2、管理锁定规则:
3、volatile变量规则
4、线程启动规则
5、线程终止规则
6、线程中断规则
7、对象终结规则
8、传递性
as-if-serial
JMM的内存可见性保证
JMM模型
synchronized
0 条评论
下一页