`
zhanghaj00
  • 浏览: 64104 次
社区版块
存档分类
最新评论

Guava 的一个异步service类 工具

 
阅读更多
public static ListeningExecutorService EXECUTOR_SERVICE = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));


    public static void exec(final FutureService objService, final Object... args) {
        // 异步处理
        ListenableFuture<Object> explosion = EXECUTOR_SERVICE.submit(
                new Callable<Object>() {
                    public Object call() {
                        Object o = null;
                        try {
                            o = objService.handler(args);
                        } catch (Exception e) {
                            log.error(e, "异步错误");
                        }

                        return o;
                    }
                });
        Futures.addCallback(explosion, new FutureCallback<Object>() {
            @Override
            public void onSuccess(Object o) {
                // TODO 成功处理
                objService.onSuccess(o, args);
            }

            @Override
            public void onFailure(Throwable throwable) {
                // TODO 失败处理
                objService.onFailure(throwable, args);
            }
        });
    }

 这段代码可以 可以当场一个工具类,把需要执行的异步操作包装成一个类(FutureService)传进来。

public interface FutureService {
    /**
     * 执行的方法
     *
     * @param args
     * @return
     */
    Object handler(Object... args);

    /**
     * 成功后执行
     *
     * @param result 执行的结果
     * @param args   传递参数(执行方法中的args)
     */
    void onSuccess(Object result, Object... args);

    /**
     * 失败后执行
     *
     * @param args      传递参数(执行方法中的args)
     * @param throwable
     */
    void onFailure(Throwable throwable, Object... args);
}

 

将 需要异步执行的动作继承这个借口。将需要执行的代码

 InfFuture.exec(auditDTService, impcompanyId,auditImport.getId());

 

 

一个异步的工具类 可以直接放在代码里面用。基于 guava 的 ListenableFuture的异步调用 Futures.addcallback(future,new Futurecallback) 来处理回掉

分享到:
评论

相关推荐

    Guava 工程项目包 有实例

    Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...

    google guava 中文教程

    Google Guava是Google开发的一个开源Java库,它包含了一系列高级且实用的集合类、缓存机制、并发工具、字符串处理、I/O工具等,极大地提升了Java开发者的工作效率。Guava的目标是通过提供一系列现代实用工具,帮助...

    Guava Source Code 22.0

    总结起来,Guava 22.0是一个功能强大的Java库,它的各种工具和组件极大地提高了开发效率,优化了代码质量。通过深入理解并合理运用Guava,开发者能够构建出更加健壮、高效的应用程序。在实际开发中,Guava不仅适用于...

    guava(google的java集合包)

    3. **并发编程支持**:Guava提供了实用的并发工具类,如ListenableFuture、Service和CountDownLatch等,它们简化了多线程环境下的编程,同时增强了同步和异步操作的控制。 4. **函数式编程**:Guava引入了函数式...

    Guava常用类库 v33.0.0.zip

    Guava是Google开发的一个Java库,它包含许多Google核心库中的高级集合、缓存、原生类型支持、并发包、字符串处理、I/O等工具类。版本33.0.0是Guava的一个更新,提供了最新的功能改进和错误修复。在深入探讨Guava常用...

    guava-API文档

    Guava是Google开发的一个Java库,它提供了许多高级和实用的集合框架、缓存机制、并发工具、字符串处理函数以及I/O工具等。Guava API文档详细地介绍了这个库的各种功能,帮助开发者更好地理解和使用Guava。 1. 集合...

    guavapdf-ch_GoogleGuava官方教程_

    Google Guava 是一个开源库,为Java开发人员提供了一组核心库,包括集合、缓存、并发工具、I/O工具、字符串处理、实用方法等。这个官方教程主要针对Guava库的使用进行详细介绍,帮助开发者更有效地利用Guava来优化...

    Guava是个风火轮之基础工具(1)Java开发Java经

    其次,Guava的缓存机制(Cache)是一个强大的功能,可以帮助开发者构建高效的缓存系统。它支持自动加载、过期策略、大小限制等功能,使得在内存管理中能更好地平衡性能和资源消耗。例如,我们可以使用LoadingCache来...

    google guava

    Google Guava是一个由Google开发并维护的开源Java库,它为Java开发者提供了许多实用的工具类和集合框架,极大地简化了常见的编程任务。这个框架包含了多个模块,如基础(base)、缓存(cache)、I/O(io)以及并发...

    guava-18.jar

    Guava是Google开发的一个核心库,它为Java程序员提供了许多实用功能,如集合、缓存、并发工具、原生类型支持、字符串处理、I/O等。"guava-18.jar"是Guava库的一个特定版本,即版本18。这个JAR文件包含了Guava在18...

    Guava 16.0 API (CHM格式)

    Strings: 一个非常非常有用的字符串工具类: 提供 splitting,joining, padding 等操作。  七. Primitives: 扩展 JDK 中未提供的对原生类型(如int、char等)的操作, 包括某些类型的无符号的变量。  八. ...

    Guava-并行编程Futures详解.pdf

    以下是一个简单的测试示例,展示了如何使用Guava的Futures工具: ```java @Test public void should_test_furture() throws Exception { ListeningExecutorService service = MoreExecutors.listeningDecorator...

    谷歌guava的jar包和源码,值得收藏

    谷歌Guava库是一个广泛使用的Java库,它提供了许多核心库的实用工具类,包括集合、缓存、并发、I/O、字符串处理、泛型 utilities、错误处理、网络、数学运算以及类加载器支持等多个方面。Guava的目标是使Java编程...

    guava学习知识点

    Guava 是 Google 开源的一个 Java 工具包,包含了丰富的工具类和库,极大地扩展了 Java 的功能。这里我们详细探讨一下 Guava 的主要知识点。 1. **RateLimiter 和 Semaphore 的区别** - `RateLimiter` 主要用于...

    guava源码src

    7. **事件总线**:EventBus是Guava的一个轻量级事件发布/订阅系统,可以用于组件之间的解耦通信。 8. **流(Stream)**:虽然Java 8引入了Stream API,但Guava早在之前就提供了FluentIterable,提供类似的功能,允许...

    google-guava-18.0

    谷歌的Guava库是Java开发中的一个强大工具集,它为开发者提供了许多实用的功能,显著提高了代码的效率和可读性。Guava 18.0 版本是该库的一个重要里程碑,它包含了丰富的API和性能优化。下面将详细讨论Guava的主要...

    Getting Started with Google Guava英文版

    4. **并发支持**:Guava提供了强大的并发工具,如`ListenableFuture`、`Service`接口等,使得异步编程变得更加简单。 5. **字符串处理**:通过`Strings`、`CharMatcher`等工具类,Guava简化了字符串操作的复杂度。 6...

    guava-19.0

    Guava是Google开发的一个核心库,它为Java程序员提供了许多实用工具类,极大地简化了常见的编程任务。在标题"guava-19.0"中,"19.0"代表的是Guava库的一个特定版本,这通常意味着该版本包含了自上一个版本以来的更新...

    Google+Guava+官方教程+-+v1.1.rar

    《Google Guava官方教程 v1.1》是一个详细介绍Google Guava库的资源,该库是Google为Java开发人员提供的一套强大的工具集。Guava旨在提高开发效率,提供许多实用的功能,包括集合、缓存、并发工具、原生类型支持、...

    guava-learn:guava 学习代码库,和对 guava 源码的学习

    Guava是Google开发的一个Java库,它提供了许多基础工具,如集合、缓存、原生类型支持、并发库、字符串处理、I/O等。Guava的目的是为了简化Java开发,提高代码质量和性能。本篇文章将深入探讨Guava的学习,包括最佳...

Global site tag (gtag.js) - Google Analytics