手寫Future模式

2021-09-23 13:56:03 字數 1534 閱讀 7495

根據前面我所說的futrue模式,手寫乙個:

//公共data資料介面

public

abstract

class

data

package

futuretest;

//獲取真實資料

public

class realdata extends

data

catch

(interruptedexception e)

system.out.println("操作執行完畢...獲取結果");

//獲取返回結果

this.requestdata="結果";

}@override

public

string getrequest()

}

package

futuretest;

//當有執行緒想要獲取realdata時候,程式會被阻塞。等到realdata被注入才會使用getreal()方法

public

class futuredata extends

data

//如果flag是false,沒有獲取到資料,傳遞realdata物件

this.realdata=realdata;

flag=true; //

獲取到執行結果 改為true

notify();//喚醒}

@override

public

synchronized

string getrequest()

catch

(interruptedexception e)

} return

realdata.getrequest();}}

package

futuretest;

public

class

futureclient

}).start();

return

futuredata; }}

啟動類主函式:

package

futuretest;

public

class

main

}

結果:

當要獲取資源的時候,data.getresult() ,如果資源沒有準備好false;那麼就會阻塞該執行緒。直到資源獲取然後該執行緒被喚醒。

posted @

2018-10-26 14:32

toov5 閱讀(

...)

編輯收藏

Future模式(憑據模式)

此種方式將future與task分離開來。導致finish 方法暴露出來。被外部呼叫。更優的方式將future與task結合起來。參考jdk futuretask類 不便於管理。如果要實現cancle,參考futuretask在內部將callback與future分離開來的設計 public int...

併發模型(一) Future模式

多執行緒開發可以更好的發揮多核cpu效能,常用的多執行緒設計模式有 future master worker guard susperionsion 不變 生產者 消費者 模式 jdk除了定義了若干併發的資料結構,也內建了多執行緒框架和各種執行緒池 鎖 分為內部鎖 重入鎖 讀寫鎖 threadloc...

java多執行緒 Future 模式

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