JAVA并发机制的底层实现原理
- CPU内存相关术语
- volatile内存实现原则
- synchronized的CPU内存实现原理
- 偏向锁(非公平锁)
- 轻量级锁和膨胀流程图
- 原子操作 CPU缓存级别的实现原理、使用java原子类的优点
Java内存模型
- 指令重排序
- 内存屏障
- happens-before
- as-if-serial
- 顺序一致性内存模型
- volatile内存语义
- JSR-133对volatile内存语义的增强
- Lock、ReentrentLock内存语义
- java.util.concurrent包的实现示意图
- final域的内存实现
- JSR-133对final内存语义的增强
- JMM设计示意图、JMM与处理器内存模型、语言内存模型的关系、JMM 内存可见性保证
- 使用volatile对双重检查锁的优化
并发编程基础
- 线程的状态有哪些和状态流转图怎么画?
- Daemon线程有什么特点?
- 启动线程时JVM都进行了哪些初始化的工作?
- 如何优雅的中断一个线程?
- 为什么suppend()、resume() stop() 过期了??
- 怎么使用volatile、synchronized通过控制对象、监视器、锁实现线程通信的?
- 怎么使用wait、notify通过对象,监视器、锁实现等待/通知模型的呢?
- join()的实现原理?
- Threadlocal的原理
- 数据库连接池的等待超时原理是啥?
- 如何构造一个基本的线程池?
- 如何构造一个基于线程池的Web服务器
Java中的锁
- java.util.concurrent.locks包的有哪些接口和方法
- AQS实现原理
- ReentrantLock实现原理
- ReadWriteLock实现原理
- LockSupport工具的使用
- Condition实现原理
JAVA并发容器和框架
- ConcurrentHashMap的实现原理和使用
- ConcurrentLinkedQueue
- BlockingQueue
- ArrayBlockingQueue
- LinkedBlockingQueue
- PriorityBlockingQueue
- DelayQueue
- SynchronousQueue
- LinkedTransferQueue
- LinkedBlockingDeque
- Fork-Join Pool
- ConcurrentNavigableHashMap
- ConcurrentSkipListMap
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- ConcurrentSkipListSet
12个原子操作类
- AtomicBoolean
- AtomicInteger
- AtomicLong
- AtomicIntegerArray
- AtomicLongArray
- AtomicReferenceArray
- AtomicReference
- AtomicReferenceFieldUpdater
- AtomicMarkableReference
- AtomicIntegerFieldUpdater
- AtomicLongFieldUpdater
- AtomicStampedReference
并发工具类
- CountDownLatch
- CyclicBarrier
- Semaphore
- Exchanger
线程池
- ThreadPoolExecutor实现原理
- BlockingQueue
- guava ThreadPoolBuilder
- RejectedExecutionHandler
Executor
- Executor 实现原理
- ThreadPoolExecutor
- ScheduledThreadPoolExecutor
- FutureTask
- FixedThreadPool
- SingleThreadPool
- CachedThreadPool
- ScheduledThreadPool
参考数据
- 书籍:Java并发编程技术
- 链接:Java Concurrency