Java多线程并发编程
2024-04-10 10:04:25 10 举报
AI智能生成
Java并发框架学习
作者其他创作
大纲/内容
并发线程池、任务执行
线程池
Executor
ThreadPoolExecutor
构造参数
keepAliveTime
TimeUnit
runnableTaskQueue
PriorityBlockingQueue
ArrayBlockingQueue
LinkedBlockingDeque
SynchronousQueue
ThreadFactory
种类
Callable和Future
ScheduledExecutorService
合理配置线程池
线程池的监控
Fork/Join框架
Fork/Join的设计
分割任务
执行任务合并
CompletableFuture
Disruptor并发框架
并发集合
ConcurrentHashMap
什么是HashMap
高并发下的HashMap
什么是ConcurrentHashMap
ConcurrentHashMap的结构
ConcurrentHashMap初始化
ConcurrentHashMap允许多个读并发进行
ConcurrentLinkedQueue
Java中的阻塞队列
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
DelayQueue
使用场景
缓存系统的设计
定时任务调度
SynchronousQueue
LinkedTransferQueue
LinkedBlockingDeque
CopyOnWrite
CopyOnWriteArrayList
CopyOnWriteArraySet
CopyOnWrite容器介绍
使用场景
黑白名单
读多写少
优缺点
线程通信
共享内存 volatile变量
线程之间共享程序的公共状态,通过写-读(jdk.internal.misc.Unsafe#compareAndSetInt)内存中的公共值来隐式通信
消息传递 通知唤醒线程
线程之间通过发送消息(jdk.internal.misc.Unsafe#unpark)来实现通信
线程同步、锁
原子操作
基本类型
AtomicBoolean
AtomicInteger
AtomicLong
数组
AtomicIntegerArray
AtomicLongArray
AtomicReferenceArray
引用类型
AtomicReference
AtomicReferenceFieldUpdater
原子更新字段类
AtomicIntegerFieldUpdater
AtomicLongFieldUpdater
AtomicStampedReference
Java如何实现原子操作
循环使用CAS实现原子操作
锁
同步工具类
CyclicBarrier
应用场景
CountDownLatch
一个线程调用countDown方法happen-before,另一个线程调用await等待
Semaphore
使用场景
CountDownLatch和Semaphore区别
子主题
Exchanger
子主题
锁
ReentrantLock
实现重进入
非公平锁
公平锁
ReentrantReadWriteLock
读写锁、读不加锁,写时加锁
锁的内存语义?
ReentrantLock.NonfairSync
ReentrantLock.FairSync
concurrent包的实现(重复内容, 做总体概要)
Lock接口
Condition
Condition的实现
等待队列
等待
通知
LockSupport
内存模型
重排序
重排序对多线程的影响
顺序一致性
数据竞争与顺序一致性
顺序一致性内存模型
同步程序的顺序一致性效果
未同步程序的执行特性
happens-before
定义
规则
1. 程序执行次序规则:在一个单独的线程中,按照程序代码的顺序执行,(时间上)执行的操作happes-before(时间上) 后执行的操作
2. 管理锁定规则:一个unlock操作happens-before后面(时间上的先后顺序,下同)对同一个锁的lock操作
3. volatile变量规则:对一个volatile变量的写操作 happens-before 后面 对该volatile变量的读操作
4. 线程启动规则:线程Thread对象的start()方法 happens-before此线程的每一个动作
5. 线程终止规则:线程的所有操作都 happens-before 对此线程的终止检测;可以通过Thread.join()结束、Thread
as-if-serial
JMM的内存可见性保证
其他
ThreadLocal
set(T) 设置一个值
0 条评论
下一页