1. 程式人生 > >Java是如何實現Future模式的?萬字詳解!

Java是如何實現Future模式的?萬字詳解!

JDK1.8原始碼分析專案(中文註釋)Github地址: https://github.com/yuanmabiji/jdk1.8-sourcecode-blogs # 1 Future是什麼? 先舉個例子,我們平時網購買東西,下單後會生成一個訂單號,然後商家會根據這個訂單號發貨,發貨後又有一個快遞單號,然後快遞公司就會根據這個快遞單號將網購東西快遞給我們。在這一過程中,這一系列的單號都是我們收貨的重要憑證。 因此,JDK的Future就類似於我們網購買東西的單號,當我們執行某一耗時的任務時,我們可以另起一個執行緒非同步去執行這個耗時的任務,同時我們可以乾點其他事情。當事情幹完後我們再根據future這個"單號"去提取耗時任務的執行結果即可。因此Future也是多執行緒中的一種應用模式。 > **擴充套件**: 說起多執行緒,那麼Future又與Thread有什麼區別呢?最重要的區別就是Thread是沒有返回結果的,而Future模式是有返回結果的。 # 2 如何使用Future 前面搞明白了什麼是Future,下面我們再來舉個簡單的例子看看如何使用Future。 假如現在我們要打火鍋,首先我們要準備兩樣東西:把水燒開和準備食材。因為燒開水是一個比較漫長的過程(相當於耗時的業務邏輯),因此我們可以一邊燒開水(相當於另起一個執行緒),一邊準備火鍋食材(主執行緒),等兩者都準備好了我們就可以開始打火鍋了。 ```java // DaHuoGuo.java public class DaHuoGuo { public static void main(String[] args) throws Exception { Fu