根據前面我所說的futrue模式,手寫乙個:
//公共data資料介面
public
abstract
class
data
packagefuturetest;
//獲取真實資料
public
class realdata extends
data
catch
(interruptedexception e)
system.out.println("操作執行完畢...獲取結果");
//獲取返回結果
this.requestdata="結果";
}@override
public
string getrequest()
}
packagefuturetest;
//當有執行緒想要獲取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
}
![](https://pic.w3help.cc/895/c50e26c7384c1d39b7981308b14e6.jpeg)
當要獲取資源的時候,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...