ListenableFuture類
- jdk5之後有了Future這種異步執行的結構
ExecutorService executor = Executors.newCachedThreadPool();
Future<Integer> future = executor.submit(new Callable<Integer>(){
public Integer call() throws Exception{
return service.getCount();
} });
//Retrieve the value of computation
Integer count = future.get();
- ListenableFuture對Future進行了擴充,允許注冊一個回調函數,task執行完後自動調用。
- 擷取ListableFuture對象。
正如我們擷取Future對象要通過ExecutorService.submit(Callable)來擷取一樣,我們可以這樣建立ListenableFuture對象:
?
|
FutureCallback類
- FutureCallback定義了onSuccess和onFailure方法,onSuccess方法會接收一個Future對象,這樣我們就可以擷取Future的結果。
- 首先需要一個FutureCallback實作類。
?
|
使用執行個體: ?
|
如果CallBack是一個耗時操作,你應該選擇另一個注冊CallBack: ?
|
SettableFuture類:
SettableFuture可以用來設定要傳回得值:
?
|
AsyncFunction:
- 該接口與函數式程式設計密切相關, 類似Function, 但apply方法會轉換成一個ListenableFuture封裝的範型對象。
?
|
FutureFallback類:
- FutureFallback用于異常恢複的備份。
?
|
Futures類:
- Futures類是有關Future執行個體的一個工具類。
異步轉換:
?
|
使用FutureFallbacks:
?
1 | |
RateLimiter:
- RateLimiter限制通路每秒通路資源的線程數。有點類似信号量Semaphore。
?
|
?
|
也有非阻塞式地嘗試: ?
|
不吝指正。