<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Juc on Fulur</title><link>http://example.org/tags/juc/</link><description>Recent content in Juc on Fulur</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 29 Apr 2025 17:52:52 +0800</lastBuildDate><atom:link href="http://example.org/tags/juc/index.xml" rel="self" type="application/rss+xml"/><item><title>JUC：ConcurrentHashMap分段锁演进史：从JDK7到JDK8的革新之路</title><link>http://example.org/posts/java/juc/concurrenthashmap%E5%88%86%E6%AE%B5%E9%94%81%E6%BC%94%E8%BF%9B%E5%8F%B2/</link><pubDate>Tue, 29 Apr 2025 17:52:52 +0800</pubDate><guid>http://example.org/posts/java/juc/concurrenthashmap%E5%88%86%E6%AE%B5%E9%94%81%E6%BC%94%E8%BF%9B%E5%8F%B2/</guid><description>&lt;p>ConcurrentHashMap是Java并发编程中至关重要的线程安全容器，其设计演进体现了对高并发场景下性能与安全的极致追求。本文将从分段锁的起源、JDK7的实现缺陷，到JDK8的架构革新，全面解析其演进历程。&lt;/p></description></item><item><title>JUC：异步编程陷阱：CompletableFuture回调地狱解决方案</title><link>http://example.org/posts/java/juc/%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E9%99%B7%E9%98%B1completablefuture%E5%9B%9E%E8%B0%83%E5%9C%B0%E7%8B%B1%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</link><pubDate>Tue, 29 Apr 2025 17:52:52 +0800</pubDate><guid>http://example.org/posts/java/juc/%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E9%99%B7%E9%98%B1completablefuture%E5%9B%9E%E8%B0%83%E5%9C%B0%E7%8B%B1%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</guid><description>&lt;h2 id="一回调地狱的典型症状">一、回调地狱的典型症状&lt;/h2>
&lt;p>当使用&lt;code>CompletableFuture&lt;/code>进行多级异步操作时，若采用传统的嵌套回调模式，代码会迅速失控：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="n">CompletableFuture&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">supplyAsync&lt;/span>&lt;span class="p">(()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">fetchOrder&lt;/span>&lt;span class="p">())&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">thenAccept&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">order&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">CompletableFuture&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">supplyAsync&lt;/span>&lt;span class="p">(()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">checkInventory&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">order&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">thenAccept&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">inventory&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">CompletableFuture&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">supplyAsync&lt;/span>&lt;span class="p">(()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">calculatePrice&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">inventory&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">thenAccept&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">price&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">CompletableFuture&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">runAsync&lt;/span>&lt;span class="p">(()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sendNotification&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">price&lt;/span>&lt;span class="p">));&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">});&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">});&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">});&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>问题诊断&lt;/strong>：&lt;/p></description></item></channel></rss>