要求
六种状态及转换
分别是
其它情况(只需了解)
五种状态
五种状态的说法来自于操作系统层面的划分
要求
七大参数
代码说明 day02.TestThreadPoolExecutor 以较为形象的方式演示了线程池的核心组成
要求
一个共同点,三个不同点
共同点
不同点
要求
三个层面
不同点
公平锁
条件变量
代码说明
要求
原子性
可见性
有序性
代码说明
要求
对比悲观锁与乐观锁
代码说明
要求
更形象的演示,见资料中的 hash-demo.jar,运行需要 jdk14 以上环境,进入 jar 包目录,执行下面命令 java -jar --add-exports java.base/jdk.internal.misc=ALL-UNNAMED hash-demo.jar
Hashtable 对比 ConcurrentHashMap
ConcurrentHashMap 1.7
Segment(大数组) + HashEntry(小数组) + 链表
,每个 Segment 对应一把锁,如果多个线程访问不同的 Segment,则不会冲突ConcurrentHashMap 1.8
Node 数组 + 链表或红黑树
,数组的每个头节点作为锁,如果多个线程访问的头节点不同,则不会冲突。首次生成头节点时如果发生竞争,利用 cas 而非 syncronized,进一步提升性能要求
作用
原理
每个线程内有一个 ThreadLocalMap 类型的成员变量,用来存储资源对象
ThreadLocalMap 的一些特点
弱引用 key
ThreadLocalMap 中的 key 被设计为弱引用,原因如下
内存释放时机