`

Guava包的ListenableFuture解析

    博客分类:
  • java
 
阅读更多
package com.downjoy.test.guava.concurrency;

import com.downjoy.test.guava.GuavaBase;
import com.google.common.util.concurrent.*;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
 * DESCRIPTION.
 *
 * @author Jonathan L.(xingbing.lai@downjoy.com)
 * @version 1.0.0 -- Datetime: 16-8-25 上午10:27
 */
public class ListenableFutureTest extends GuavaBase {

    public static void main(String[] args) throws InterruptedException {
        final ExecutorService pool = Executors.newFixedThreadPool(10);

//        // JDK
//        Future<String> future = pool.submit(new Callable<String>() {
//            public String call() throws Exception {
//                return "D.CN";
//            }
//        });
//
//        try {
//            String name = future.get();
//            print(name);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }

        // Guava
        ListeningExecutorService executorService = MoreExecutors.listeningDecorator(pool);
        ListenableFuture futureTask = executorService.submit(new Callable() {
            @Override
            public Object call() throws Exception {
                return "D.CN";
            }
        });
//        // 运行监控,可以不加
//        futureTask.addListener(new Runnable() {
//            @Override
//            public void run() {
//                print("Game Over !!!");
//            }
//        }, executorService);

        FutureCallbackImpl callback = new FutureCallbackImpl();
        Futures.addCallback(futureTask, callback);
        print(callback.getCallbackResult());

        Thread.sleep(2000);
        pool.shutdown();
    }

    private static class FutureCallbackImpl implements FutureCallback<String> {
        StringBuilder builder = new StringBuilder("结果加点东西>>>");

        @Override
        public void onSuccess(String result) {
            print("success:" + result);
            builder.append(result);
        }

        @Override
        public void onFailure(Throwable t) {
            print("failure:" + t.getMessage());
        }

        public String getCallbackResult(){
            return builder.toString();
        }
    }
}


参考:http://ifeve.com/google-guava-listenablefuture/
分享到:
评论

相关推荐

    NIO_RandomAccessFile_多线程_按行读本地CSV文件(java==> google guava包ListenableFuture)

    NIO_RandomAccessFile_多线程读本地CSV文件(java==&gt; google guava包ListenableFuture) reader里有个main函数,更改文件路径后,直接运行即可

    listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar

    java运行依赖jar包

    google-guava所需依赖包,listenablefuture-9999.0-empty-to-avoid-conflic

    google-guava所需依赖包,listenablefuture-9999.0-empty-to-avoid-conflic

    Guava的Jar包(guava-26.0-jre.jar)

    Guava是Google公司开发的一款适用于Java的工具类集合。

    guava-23.6-android

    guava-23.6-android guava 版本23.6的 jar 包

    Guava 工程项目包 有实例

    Guava 工程包含了若干被 Google 的 Java 项目广泛依赖 的核心库,希望通过此文档为 Guava 中最流行和最强大的功能,提供更具可读性和解释性的说明

    guava多个版本jar包

    guava多个版本jar包,有guava-2.6.2.jar、guava-18.0.jar、guava-19.0.jar、guava-23.0.jar。

    guava-27.0.1-jre-API文档-中英对照版.zip

    赠送jar包:guava-27.0.1-jre.jar; 赠送原API文档:guava-27.0.1-jre-javadoc.jar; 赠送源代码:guava-27.0.1-jre-sources.jar; 赠送Maven依赖信息文件:guava-27.0.1-jre.pom; 包含翻译后的API文档:guava-...

    Google开源Guava包让使用Java语言变得更舒适

    Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] ...

    guava14.0.1jar包及API文档

    Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] ...

    com.google.common guava 18.0 JAR包

    Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] ...

    Google Guava 多版本集合

    Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法...

    guava14.0.1jar包

    Guava作为Java编程的助手,可以提升开发效率,Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库

    guava jar包

    Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] ...

    guava-16.0.1-API文档-中文版.zip

    赠送jar包:guava-16.0.1.jar; 赠送原API文档:guava-16.0.1-javadoc.jar; 赠送源代码:guava-16.0.1-sources.jar; 赠送Maven依赖信息文件:guava-16.0.1.pom; 包含翻译后的API文档:guava-16.0.1-javadoc-API...

    guava-23.0-API文档-中文版.zip

    赠送jar包:guava-23.0.jar; 赠送原API文档:guava-23.0-javadoc.jar; 赠送源代码:guava-23.0-sources.jar; 赠送Maven依赖信息文件:guava-23.0.pom; 包含翻译后的API文档:guava-23.0-javadoc-API文档-中文...

    guava-17.0-API文档-中文版.zip

    赠送jar包:guava-17.0.jar; 赠送原API文档:guava-17.0-javadoc.jar; 赠送源代码:guava-17.0-sources.jar; 赠送Maven依赖信息文件:guava-17.0.pom; 包含翻译后的API文档:guava-17.0-javadoc-API文档-中文...

    guava-20.0-API文档-中文版.zip

    赠送jar包:guava-20.0.jar; 赠送原API文档:guava-20.0-javadoc.jar; 赠送源代码:guava-20.0-sources.jar; 赠送Maven依赖信息文件:guava-20.0.pom; 包含翻译后的API文档:guava-20.0-javadoc-API文档-中文...

    不加密Google Guava视频教程.txt

    ├─Google Guava 第27讲-ListenableFuture,FutureCallBack讲解.wmv ├─Google Guava 第28讲-LRU算法原理以及两种LRU算法的实现.wmv ├─Google Guava 第29讲-SoftReference,WeakReference,PhantomReference...

    guava-retry jar包

    guava-retry jar包,guava-retry2.0,guava-retry jar包

Global site tag (gtag.js) - Google Analytics