future模式是多執行緒開發中非常常見的一種設計模式,它的核心思想是非同步呼叫。當我們需要呼叫乙個方法時,若該方法比較複雜,執行較慢,那麼我們就要一直等待直到該方法執行結束,返回資訊。但我們有時候並不急著要這個結果,而希望在這個方法在執行的時候可以做別的事情,而當我們需要這個結果的時候,再去獲取這個結果。這個時候我們就可以用的future模式。
future模式相當於我們做出請求之後,並不會直接獲得真實想要的資料,而是返回了乙個契約(比如說,訂單),當我們需要這個真實的資料的時候,再通過這個契約去獲取真實的資料。再我們沒有去拿這個真實資料的時候,程式是可以做其他操作的,這樣就不會把時間浪費在等待這個並不急著要的真實資料上。當然,如果我們去獲取這個真實資料的時候,該方法還沒有執行完畢,這個時候執行緒才會進入等待。
future模式的主要參與者:
main:啟動系統,呼叫client發出請求;
client:返回data物件,立即返回futuredata,並開啟clientthread執行緒裝配realdata;
data:返回資料的介面;
futuredata:future資料,構造很快,但是是乙個虛擬的資料,需要裝配realdata;
realdata:真實資料,其構造比較慢,也是我們要的真實資料。
簡單實現future模式的**如下:
public class main
}public class futureclient
}).start();
return feturedata;}}
//當有執行緒想要獲取realdata的時候,程式會被阻塞。等待realdata被注入才會使用getreal()方法
public class feturedata extends data
//如果flag為false,沒有獲取到資料,傳遞readdata物件
this.realdata = realdata;
flag = true;
notify();
}@override
public synchronized string getrequest() catch (interruptedexception e)
}return realdata.getrequest();}}
//獲取真實的資料
public class realdata extends data catch (interruptedexception e)
system.out.println("操作執行完畢。。。獲取到結果result");
//獲取返回結果
this.result = "result";
}@override
public string getrequest()
}public abstract class data
併發模型(一) Future模式
多執行緒開發可以更好的發揮多核cpu效能,常用的多執行緒設計模式有 future master worker guard susperionsion 不變 生產者 消費者 模式 jdk除了定義了若干併發的資料結構,也內建了多執行緒框架和各種執行緒池 鎖 分為內部鎖 重入鎖 讀寫鎖 threadloc...
java併發程式設計學習2 Future
future的概念 inte ce future,表示非同步計算的結果,future有個get方法而獲取結果只有在計算完成時獲取,否則會一直阻塞直到任務轉入完成狀態,然後會返回結果或者丟擲異常。相對於繼承thread來建立執行緒方式,使用runnable可以讓你的實現類同時實現多個介面,而相對於ca...
java併發程式設計學習2 Future
inte ce future,表示非同步計算的結果,future有個get方法而獲取結果只有在計算完成時獲取,否則會一直阻塞直到任務轉入完成狀態,然後會返回結果或者丟擲異常。相對於繼承thread來建立執行緒方式,使用runnable可以讓你的實現類同時實現多個介面,而相對於callable及fut...