美文网首页Java学习笔记
Guava ListenableFuture介绍以及使用

Guava ListenableFuture介绍以及使用

作者: YONGSSU的技术站点 | 来源:发表于2016-11-12 21:55 被阅读2080次

    介绍

    我们知道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介绍以及使用

        本文链接:https://www.haomeiwen.com/subject/gwwqpttx.html