<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Concurrency on Orangex-position0的技术博客</title><link>https://Orangex-position0.github.io/tags/concurrency/</link><description>Recent content in Concurrency on Orangex-position0的技术博客</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 16 Mar 2026 11:05:04 +0800</lastBuildDate><atom:link href="https://Orangex-position0.github.io/tags/concurrency/index.xml" rel="self" type="application/rss+xml"/><item><title>ConcurrentHashMap 原理分析</title><link>https://Orangex-position0.github.io/posts/java/concurrent-hashmap/</link><pubDate>Mon, 16 Mar 2026 11:05:04 +0800</pubDate><guid>https://Orangex-position0.github.io/posts/java/concurrent-hashmap/</guid><description>&lt;h2 id="概述"&gt;&lt;a href="#%e6%a6%82%e8%bf%b0" class="header-anchor"&gt;&lt;/a&gt;概述
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ConcurrentHashMap&lt;/code&gt; 是 Java 并发包中最重要的并发容器之一，本文将深入分析其实现原理。&lt;/p&gt;
&lt;h2 id="核心特点"&gt;&lt;a href="#%e6%a0%b8%e5%bf%83%e7%89%b9%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;核心特点
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;线程安全&lt;/strong&gt;：无需额外同步措施即可在多线程环境下使用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高性能&lt;/strong&gt;：采用分段锁/ CAS 机制，减少锁竞争&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;弱一致性&lt;/strong&gt;：迭代器不保证强一致性，但不会抛出 &lt;code&gt;ConcurrentModificationException&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="jdk-17-实现分段锁"&gt;&lt;a href="#jdk-17-%e5%ae%9e%e7%8e%b0%e5%88%86%e6%ae%b5%e9%94%81" class="header-anchor"&gt;&lt;/a&gt;JDK 1.7 实现：分段锁
&lt;/h2&gt;&lt;h3 id="segment-结构"&gt;&lt;a href="#segment-%e7%bb%93%e6%9e%84" class="header-anchor"&gt;&lt;/a&gt;Segment 结构
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;static&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;final&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Segment&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;V&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;extends&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ReentrantLock&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;transient&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;volatile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HashEntry&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;V&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;[]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="jdk-18-实现cas--synchronized"&gt;&lt;a href="#jdk-18-%e5%ae%9e%e7%8e%b0cas--synchronized" class="header-anchor"&gt;&lt;/a&gt;JDK 1.8 实现：CAS + synchronized
&lt;/h2&gt;&lt;h3 id="核心改进"&gt;&lt;a href="#%e6%a0%b8%e5%bf%83%e6%94%b9%e8%bf%9b" class="header-anchor"&gt;&lt;/a&gt;核心改进
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;取消 Segment 分段，直接使用 Node 数组&lt;/li&gt;
&lt;li&gt;使用 CAS + synchronized 实现更细粒度的锁&lt;/li&gt;
&lt;li&gt;红黑树优化链表过长问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="总结"&gt;&lt;a href="#%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;总结
&lt;/h2&gt;&lt;p&gt;ConcurrentHashMap 的演进体现了 Java 在并发领域的持续优化。&lt;/p&gt;</description></item></channel></rss>