Guava ListenableFuture介紹以及使用
介紹
我們知道java中的Future表示一個非同步計算任務,當任務完成時可以得到計算結果,如果我們希望一旦計算完成就拿到結果展示給使用者或者做計算,就必須使用另一個執行緒不斷的查詢計算狀態,這樣會使程式碼複雜而且效率低下。使用guava的ListenableFuture可以幫我們檢測Future是否完成了,如果完成就會自動呼叫回撥函式,這樣可以減少併發程式的複雜度。
使用示例
public static void main(String[] args) {
ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
// 執行任務
final ListenableFuture<Integer> listenableFuture = executorService.submit(new Callable<Integer>() {
public Integer call() throws Exception {
System.out.println("新任務。。。");
TimeUnit.SECONDS.sleep(1);
return 7;
}
});
// 任務完成回掉函式
final FutureCallback<Integer> futureCallback = new FutureCallback<Integer>() {
@Override
public void onSuccess(Integer result) {
System.out.println("任務執行成功,對任務進行操作。");
}
@Override
public void onFailure(Throwable t) {
System.out.println("任務執行失敗。");
}
};
// 繫結任務以及回撥函式
Futures.addCallback(listenableFuture, futureCallback);
}
相關文章
- Guava併發:ListenableFuture使用介紹以及示例Guava
- Guava文件翻譯之ListenableFutureGuava
- Guava庫介紹Guava
- Google guava工具類的介紹和使用GoGuava
- ios中Runtime的介紹以及使用iOS
- log4j介紹以及使用教程
- 工具篇:介紹幾個好用的guava工具類Guava
- Guava文件翻譯之 Guava簡介Guava
- 關於keras框架的介紹以及操作使用Keras框架
- guava的wiki和Strings的所有方法介紹Guava
- 球幕影院的應用介紹以及使用特點
- SOLIDWORKS批次改名外掛功能介紹以及使用方法Solid
- Swift - final關鍵字的介紹,以及使用場景Swift
- webpack介紹以及快速配置上手Web
- golang 介紹以及踩坑之四Golang
- GPU的介紹 以及原理的分析GPU
- Redis介紹以及安裝(Linux)RedisLinux
- 回溯演算法介紹以及模板演算法
- Github使用介紹Github
- Tmux使用介紹UX
- saltstack使用介紹
- Hive的基本介紹以及常用函式Hive函式
- 鏈式前向星介紹以及原理
- SSL與TLS的區別以及介紹TLS
- Flume架構以及應用介紹[轉]架構
- Fiddler(1)基本介紹以及工作原理
- Google Guava 使用者指南 —- 初始Guava類庫GoGuava
- JavaScript內建物件介紹(重點介紹Math(),Date(),Array()以及案例應用)JavaScript物件
- Castle Windsor常用介紹以及其在ABP專案的應用介紹AST
- Texpad for Mac編輯器使用說明以及快捷方式介紹Mac
- LangChain SQL介紹以及使用Qwen1.5執行SQL查詢教程LangChainSQL
- Redis介紹和使用Redis
- ChatGPT API使用介紹ChatGPTAPI
- ViewStub--使用介紹View
- 軟體介紹使用
- Github for Windows使用介紹GithubWindows
- 前端【Vuex】【使用介紹】前端Vue
- vagrant介紹及使用