jdk1.8synchronize的变化
时间: 2023-08-13 08:10:43 浏览: 114
jdk1.8安装与配置.rar
在JDK 1.8中,ConcurrentHashMap的实现进行了完全重构。相对于JDK 1.7的版本,JDK 1.8的ConcurrentHashMap的数据结构更接近HashMap。它使用了synchronized和CAS(Compare and Swap)来进行同步操作,而不再使用分段锁的概念。锁的粒度也降低了,不再是基于Segment的锁,而是对每个桶(数组中的头节点)加锁。这样的改变使得操作更加清晰流畅。此外,JDK 1.8还使用红黑树来优化链表,当链表长度超过一定阈值时,会将链表转换为红黑树,提高遍历效率。总的来说,JDK 1.8的ConcurrentHashMap的实现更简单,操作更清晰流畅,同时也提高了性能。\[1\]\[2\]
另外,关于synchronized的变化,JDK 1.8之前的版本中,synchronized是通过底层的操作系统Mutex Lock来实现的,这种锁被称为"重量级锁"。由于锁的获取和释放需要从用户态转换到核心态,导致性能较低。但是在JDK 1.6之后,为了提高性能,引入了"轻量级锁"和"偏向锁"的概念,使得synchronized的效率与ReentrantLock相差无几,甚至在某些场景下更优于ReentrantLock。因此,在JDK 1.8中,synchronized的性能得到了提升。\[3\]
#### 引用[.reference_title]
- *1* [JDK1.8的ConcurrentHashMap底层实现解析](https://blog.csdn.net/qq_51901495/article/details/126320698)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Java集合源码剖析——基于JDK1.8中ConcurrentHashMap的实现原理](https://blog.csdn.net/weixin_43823808/article/details/126732474)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Synchronized原理和jdk1.8后的优化](https://blog.csdn.net/qq_35152037/article/details/105463688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文