多執行緒設計模式之Future 設計模式

2021-10-25 02:16:18 字數 1418 閱讀 7832

future 設計模式就好像我們在傳送ajax請求一樣,頁面是非同步的進行後台處理,使用者無須一直等待請求的結果,可以繼續瀏覽或操作其他內容。

這個圖就很清楚的講清楚了這個模式,當客戶端傳送資料過去,服務端會進行處理,但是為了保證使用者體驗,使用者可以進行其他操作,當使用者需要該資料的時候,進行請求即可,這種模式適用於有很多資料需要處理的時候,可以讓後台去處理,我們可以進行自己想要的操作。

完整**如下:

請求的資料物件介面:

public

inte***ce

data

客戶端:

/**

* 客戶端

*/public

class

futureclient).

start()

;// 3. 快速返回包裝類

return futuredata;

}}

資料報裝類:

/**

* 資料報裝類

*/public

class

futuredata

implements

data

@override

public

synchronized string getrequest()

catch

(interruptedexception e)

}// 裝載好的真實物件的資料進行返回

return

this

.realdata.

getrequest();}}

真實的資料類物件:

/**

* 真實資料類

*/public

class

realdata

implements

data

catch

(interruptedexception e)

system.out.

println

("操作完畢,獲取結果。");

this

.result =

"張三";}

@override

public string getrequest()

}

測試:

public

class

main

}

結果:

多執行緒中的設計模式(Future模式)

future模式 給你個引用 你在通過這個引用去獲取資料。給你個鑰匙,自己去拿 其中客戶端實際使用時,採用執行緒等待形式,當other call 執行完成後,喚醒客戶端請求。futureclient public class futureclient start return futuredata ...

java多執行緒 Future 模式

public static void main string args throws exception futuretaskfuturetask new futuretask c1 new thread futuretask start callable c2 new callable futur...

多執行緒 Callable與Future模式

future常用方法 v get 獲取非同步執行的結果,如果沒有結果可用,此方法會阻塞直到非同步計算完成。v get long timeout timeunit unit 獲取非同步執行結果,如果沒有結果可用,此方法會阻塞,但是會有時間限制,如果阻塞時間超過設定的timeout時間,該方法將丟擲異常...