Java多线程并发编程详解
2021-07-18 22:17:28 0 举报
AI智能生成
Java多线程详解,包含ConcurrentHashMap,原子类,内存模型,信号量等。
作者其他创作
大纲/内容
应用场景
CyclicBarrier
一个线程调用countDown方法happen-before,另外一个线程调用await方法。
CountDownLatch
CyclicBarrier和CountDownLatch的区别
使用场景
Semaphone
并发工具类
实现重进入
公平锁
非公平锁
ReentrantLock
ReentrantReadWriterLock
volatile实现机制
vloatile的特性
volatile写-读的内存语义
volatile内存语义的实现
内存语义
volatile
NonfairSync
锁的内存语义
concurrent包的实现
Lock接口
等待队列
等待
通知
Condition的实现
Condition
LockSupport
锁
set(T):设置一个值
ThreadLocal
1.分割任务
2.执行任务合并结果
Fork/join的设计
Fork/Join
Disruptor并发框架
其他
线程之间共享程序的公共状态,通过写-读内存中的公共状态继续隐式通信
共享内存
线程之间必须通过发送消息来显示进行通信
消息传递
线程通信
什么是HashMap
高并发下的HashMap
什么是ConcurrentHashMap
ConcurrentHashMap的数据结构
ConcurrentHashMap的初始化
ConcurrentHashMap允许多个并发读写进行?
ConcurrentHashMap的Size操作
ConcurrentHashMap get操作
ConcurrentHashMap put操作
ConcurrentHashMap
1.使用阻塞算法
2.使用非阻塞算法
如何实现一个线程安全的队列?
入队列
出队列
ConcurrentLinkedQueue
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
1、缓存系统设计
2、定时任务调度
DelayQueue
SynchronousQueue
LinkedTransferQueue
Java中的阻塞队列
CopyOnWriteArraylist
CopyOnWriteArraySet
CopyOnWrite容器介绍
黑白名单
读多写少
优缺点
CopyOnWrite
并发集合
Execuror
corePoorSize
maximumPoolSize
keepAliveTime
timeUnit
workQueue
ThreadFactory
AbortPolicy
CallsRunsPolicy
DiscardOldestPolicy
DiscardPolicy
handler
构造方法参数
种类
ThreadPoorExecuror
Callable和Future
ScheduLedExecuoroService
合理配置线程池
线程的监控
TODO
线程池
AtomicBoolean
AtoMicInteger
AtoMicLong
基本类型
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
数组
AtomicReference
AtomicReferenceArrayFieldUpdater
引用类型
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicStampedFieldUpdater
原子更新字段类
1.使用循环CAS实现原子操作
2.锁
Java如何实现原子操作
原子操作
重排序对多线程的影响
重排序
数据竞争与顺序一致性
顺序一致性内存模型
同步线程的顺序一致性效果
未同步程序的执行特性
顺序一致性
定义
1、程序次序规则:在一个单独的线程中,按照程序代码的执行流顺序,(时间上)先执行的操作happen-before后执行的操作。
2、管理锁定规则:一个unlock操作happen-before后面(时间上的先后顺序,下同)对同一个锁的lock操作。
3、volatile变量规则:对一个volatile变量的写操作happen-before后面对该变量的读操作。
4、线程启动规则:Therad对象的start方法happen-before此线程的每一个动作。
5、线程终止规则:线程的所有操作都happen-before对此线程的终止检测,可以通过Thread.join()方法结束、Threwad.isAlive()的返回值等手段检测到线程已经终止执行。
6、线程中断规则:对线程interrupt()方法的调用happen-before发生于被终端线程的代码检测到终端事件的发生。
7、对象终结规则:一个对象的初始化完成(构造函数执行结束)happen-before它的finalizi()方法的开始。
8、传递性:如果操作A happen-before 操作B,操作B happen-before 操作C,那么可以得出A happen-before操作C。
规则
happends-before
as-if-serial
JMMd的内存可见性保证
内存模型
多线程并发编程
0 条评论
回复 删除
下一页