#Java并发与多线程学习 向Doug Lea致敬
感谢Doug Lea的在并发领域的卓越工作,让JVM平台程序员并发编程变得容易
sychronzied 三个使用范围和对应监视器对象
可重入锁ReentrantLock
锁粒度与并发级别
死锁
活锁
饥饿
可重入锁与读写锁所用
性能 便捷性 并发程度
-
计算机体系结构和java内存模型 JSR-133规范
可见性 有序性 原子性 happen-before -
volatile关键字的语义(可见性)
-
使用volatile经典场景
- 使用Object对象的wait()和notify方法实现线程通信 实现生产者和消费者
条件竞争 概念 临界区 概念 线程安全 概念 级别 逃逸 线程安全必须满足的逃逸规则 不可变对象
内存模型 JVM规范是对语言语法规则的约定和语言运行机器的一种抽象 JVM抽象机器模型与实际机器模型
- ThreadPoolExecutor
- ScheduledThreadPoolExecutor
- ExecutorService
- Executor
Executor类型 | 特点 | 使用场合 |
---|---|---|
ThreadPoolExecutor | 特点 | 使用场合 |
SingleThreadExecutor | 特点 | 使用场合 |
FixedThreadPool | 特点 | 使用场合 |
CachedThreadPool | 特点 | 使用场合 |
ScheduledThreadPoolExecutor | 特点 | 使用场合 |
ThreadPoolExecutor四大
.corePool:核心线程池的大小。
.maximumPool:最大线程池的大小。
.BlockingQueue:用来暂时保存任务的工作队列。
.RejectedExecutionHandler:当Thread-PoolExecutor已经关闭或ThreadPoolExecu-tor已经饱和时(达到了最大线程池大小且工作队列已满),execute()方法将要调用的Handler。
Doug Lea 原始Fork Join框架论文
Fork Join框架的思想: 递归 分治 工作窃取
异步执行也可以获取执行结果
- AtomicInteger
- AtomicLong
- AtomicLongArray
- AtomicReference
- AtomicReferenceFieldUpdater
CAS
- ConcurrentHashMap
- ConcurrentLinkedQueue Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algor
- ConcurrentSkipListMap
-
AbstractQueuedSynchronizer 基于FIFO对列的阻塞锁和同步工具类框架
原始论文 -
ArrayBlockingQueue DelayQueue 等一堆BlockingQueue 实现类
- CountDownLatch
- CyclicBarrier
- Semaphore
- Condition
- Exchange
- 锁分离(读写分离)
- 缩小锁范围
- 缩小锁粒度 ConcurrentHashMap
- 锁粗化
脱离java语言和JVM平台 从更广泛的计算机领域视角看并发与并行编程,并发编程一些通用模式的总结 抄自维基百科
- Read write lock pattern
- Thread pool pattern
- Thread-local storage
- Barrier
- Scheduler pattern
- Double-checked locking
- Immutability
- 不一一列举
1.Amdahl定律
2.Gustafson定律
3.Sun-Ni定律
参考资料
1.阿里Java并发编程培训
2.The Java Memory Model 站点
3.[Patterns for Concurrent, Parallel, and Distributed Systems] (http://www.cs.wustl.edu/~schmidt/patterns-ace.html)
4.[Concurrency talk given at Scaleconf] (http://shairosenfeld.com/concurrency.html)
5.Java并发编程艺术
6.实战Java高并发程序设计
7.Java 7 concurrency cookbook
8.并发系列文章
9.Java Memory Model Pragmatics (transcript)
10.java memory model