并发基础 | 并发-锁 | 线程与线程池 | 并发-工具 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
对应脑图如下:
以上内容为 XMind 脑图,需要下载后使用 XMind 打开
- 《Java并发编程的艺术》第二章 Java并发机制的底层实现原理
- 《Java并发编程的艺术》第三章 内存模型
- 讲一讲什么是 Java 内存模型
- 什么是指令重排序,为什么需要指令重排序
- 什么是”内存可见性“问题
- 主内存和工作内存的关系
- 什么是 happen-before 规则
- final 域的内存语义
- 为什么 String 被设计为不可变的
- 《Java并发编程的艺术》第七章 Java 中的 13个原子操作
- 原子类是如何利用 CAS 保证线程安全的
- AtomicInteger 在高并发下性能不好,如何解决,为什么
- 原子类和 volatile 有什么异同
- AtomicInteger 和 synchronized 的异同点
- 《Java并发编程的艺术》第三章 内存模型
- volatile 防止重排序的原理是什么
- 单例模式的双重检查锁模式为什么必须加 volatile
- 《Java并发编程的艺术》第二章 Java 并发机制的底层实现原理
- 《Java并发编程的艺术》第五章 Java 中的锁
- 你知道那几种锁,分别有什么特点
- 悲观锁和了乐观锁的本质是什么
- 如何看到 synchronized 背后的 “monitor"锁
- synchronized 和 Lock 如何选择
- Lock 有哪几个常用方法,分别有什么用
- Lock 为什么要在 finally 中释放锁
- AQS 的内部原理是怎么样的
- AQS 中的 Condition 内部原理是怎么样的
- ReentrantLock 内部实现原理
- 讲一讲公平锁和非公平锁,为什么要”非公平“
- ReentrantReadWriteLock(读写锁) 获取锁的的规则
- ReentrantReadWriteLock(读写锁)锁降级
- JVM 对锁做了哪些优化
- 《Java并发编程的艺术》第四章 Java并发编程基础
- 线程的实现方式
- 如何正确的停止线程
- 线程如何在6种状态之间进行切换的
- ThreadLocal 内部原理及其使用场景
- wait/notify/notifyAll方法的使用注意事项
- 有哪几种实现生产者消费者模式的方法
- 《Java并发编程的艺术》第九章 Java中的线程池
- 使用线程池比手动创建线程好在哪里
- 线程池的各个参数的意义
- 线程池有哪4种拒绝策略
- 常见的线程池及使用场景
- 线程池中常用的阻塞队列有哪些
- 合适的线程池数量是多少,CPU核心数和线程数的关系
- shutDown和 shutDownNow 的区别
- 线程池实现“线程复用的内部原理"