`
arcticfox9902
  • 浏览: 108400 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[Google Guava笔记](九)concurrent

阅读更多

7 com.google.common.util.concurrent

 

接口:

          ListenableFuture<V>:继承 java Future接口,增加了 addListener(Runnable listener, Executor executor)方法,注册一个监听器,当 Future中的任务完成时,在 executor中运行 listener

         CheckedFuture<V, X entends Exception>:继承 ListenerFuture<V>接口,定义了 checkedGet() checkedGet(long timeout, TimeUnit unit),这些方法将 get(...)方法的异常转换为和应用相关的异常。

         UninterruptibleFuture<V>:继承 java Future接口,该类型的 get()调用不能被中断,如果该 Future对应的线程被中断, get()方法继续阻塞直到结果可用或者超时,然后才会中断线程。通过 Futures的静态方法 makeUninterruptible(Future)可获得一个实例。

         Service:有操作状态的对象,通过附加的同步生命周期方法 start() stop()来转到或离开某个状态。 service的正常生命周期有: NEW STARTING RUNNING STOPPING TERMINATED,此外 State还有一个枚举值: FAILED。定义了 start() startAndWait() isRunning() state() stop() stopAndWait()方法。

         TimeLimiter:该类型生成一个代理,当调用被代理的对象的方法时,会强制加一个时间限制。定义了 newProxy(T target, Class<T> interfaceType, long timeoutDuration, TimeUnit timeoutUnit) callWithTimeOut(Callable<T> callable, long timeoutDuration, TimeUnit timeoutUnit, boolean interruptible) newProxy()方法生成 target的一个代理, callWithTimeout() 方法:如果 callable执行完毕时还没有到达限定时间则将结果或异常传给调用者,否则抛出 UncheckedTimeoutException。用法如下:

TimeLimiter limiter = …

TargetType proxy = limiter.newProxy(target, TargetType.class, 50, TimeUnit.MILLISECONDS);

try{

return proxy.someMethod();

} catch(UncheckedTimeoutException e) {

return DEFAULT_VALUE;

}

 

类:

         AbstractFuture<V>:抽象类,实现了 Future<V>接口。它借助一个 AbstractQueuedSynchronizer来处理同步事物,保证线程的安全性。 这个类实现了 Future的所有方法。

         AbstractCheckedFuture<V, X>:抽象类,实现了 CheckedFuture<V, X>接口。这个类封装了一个 ListenableFuture<V> delegate Future的基本方法都委托给了 delegate,提供了 checkGet(...)方法,这个方法调用 get(),如果正常获得结果则直接返回,否则将捕获到的异常转换为 X类型的异常。

         AbstractListenableFuture<V>:抽象类,扩展了 AbstractFuture<V>,实现了 ListenableFuture<V>。 该类型用一个 ExecutorList来确保所有的监听者都会被执行。监听者 /执行器对被存放在 ExecutorList中,并将会按照添加到 ExecutorList的顺序来执行,但是,因为线程调度,不保证 JVM会按该顺序来执行这些线程。此外,任务完成之后添加的监听者会被立即执行,甚至在之前添加的监听者尚未执行的情况下亦将如此。

         ForwardingFuture<V>:抽象类,扩展了 ForwardingObject,实现了 Future<V>。这个 Future将所有的方法调用委托给另一个 Future

         ForwardingListenableFuture<V>:抽象类,扩展了 ForwardingFuture<V>,实现了 ListenableFuture<V>接口。这个 Future将所有的方法调用委托给另一个 ListenableFuture

         ForwardingCheckedFuture<V, X>:抽象类,扩展了 ForwardingListenableFuture<V>,实现了 CheckedFuture<V, X>接口。这个 Future将所有的方法调用委托给另一个 CheckedFuture

         SettableFuture<V>:扩展了 AbstractListenablFuture<V>类,被声明为 final类。通过静态方法 create()可获得该类的一个实例。 set() setException() cancle()方法直接委托给父类。

         ListenableFutureTask<V>:扩展了 java FutureTask<V>类, FutureTask类实现了 Future Runnbale接口,是可取消的异步计算。内部封装了一个私有的 ExecutorList,它的子类的 done()必须调用父类的 done()

AbstractService:抽象类,实现了 Service接口。

AbstractIdleService:抽象类,实现了 Service接口。

AbstraceExecutionThreadService:抽象类,实现了 Service接口。

          ForwardingService:抽象类,扩展了 ForwardingObject类,实现了 Service接口。这个 Service将所有的方法调用委托给另一个 Service

          ExecutionList final类,实现了 Runnable接口,封装了一个 Queue Queue的元素为 RunnableExecutorPair类型。有两个成员方法: add(Runnable, Executor) run()

          SimpleTimeLimiter final类,实现了 TimeLimiter接口,封装了一个用于执行方法调用 的 ExecutorService。当限定时间到了时,执行方法的线程将会被中断。

          FakeTimeLimiter final类,实现了 TimeLimiter接口,是个假的 TimeLimiter,不对调用做任何时间限制。

          ForwardingBlockingQueue:抽象类,扩展 ForwardingQueue,实现了 BlockingQueue。它将所有的方法调用委托给另一个 BlockingQueue

         ThreadFactoryBuilder ThreadFactory的生成器。 提供以下特性:可设置线程的命名格式, 可设置是否为后台线程,可设置线程的优先级,可设置未捕获异常的处理器。

MoreExecutors

Callables:只有一个静态方法: returning(T value),返回一个 Callable<T>,它的 call()方法返回 value

Futures:提供了很多静态的工具方法。

UncaughtExceptionHandlers

UncheckedTimeoutException

 

        这一个包拖了很久才看完,因为我的确在多线程方面很弱...上周抽时间看了下java的concurrent包相关的资料,对它有了点了解,才回头来看guava的concurrent,这次就比较容易懂了(第一次看guava的concurrent,脑子里一团乱麻...)。

 

        第一遍先这样过了,以后再更加深入的理解和学习。

 

        以上。

 

 

分享到:
评论

相关推荐

    concurrent 摘自guava concurrent

    这个工程是为了学习guava concurrent中的AbstractFuture而建立的,里面有可以运行的例子,再配合我的博客:https://blog.csdn.net/o1101574955/article/details/82889851,可以看明白guava concurrent的基本设计思路...

    不加密Google Guava视频教程.txt

    ├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...

    Google Guava 官方教程

    **Google Guava官方教程** Google Guava 是一个广泛使用的 Java 库,它提供了一系列现代编程实用工具,旨在简化常见的编程任务。Guava 提供了集合框架的扩展、并发支持、缓存机制、字符串处理工具、I/O 工具以及...

    使用google guava 实现定时缓存功能

    在IT行业中,Google Guava库是一个非常强大的工具集,它为Java开发人员提供了一系列实用的集合、缓存、并发和I/O工具。本篇文章将详细探讨如何利用Guava库实现定时缓存功能,以提高应用的性能和效率。 首先,Guava...

    google guava

    通过阅读"Getting Started with Google Guava"、"JavaCachingwithGuava"、"Guava_for_Netflix_"和"guava-concurrent-slides"等文档,你可以深入理解Guava的各种特性和使用场景,从而在实际开发中更好地利用Guava提升...

    Getting Started with Google Guava

    《Getting Started with Google Guava》是Bill Bejeck所著,旨在帮助Java开发者通过Google Guava库编写更优质、更高效的代码。Bill Bejeck是一位拥有10年经验的资深软件工程师,专注于各种项目的开发工作。在写作...

    google guava 中文教程

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

    google开源项目guava.jar包

    谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...

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

    标签:google、guava、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    guavapdf-ch_GoogleGuava官方教程_

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

    Google Guava 多版本集合

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

    Google Guava

    Google Guava库是由Google开发的一个开源项目,旨在提供Java开发中常用的基础功能。它的目标是简化Java编程,为开发者提供更加清晰、高效的代码编写方式。通过使用Guava库,开发者可以不必在每次项目中重复编写相同...

    Getting Started with Google Guava code

    **Google Guava简介** Google Guava 是一个广泛使用的开源库,为Java开发人员提供了一系列实用工具类和集合框架。这个库旨在简化常见的编程任务,提高代码的可读性和可维护性。Guava 提供了丰富的功能,包括缓存、...

    Getting Started with Google Guava.pdf

    Google Guava 是一个由Google提供的开源Java库,它包含了许多强大的工具类和集合类,这些类可以帮助开发者更高效地编写Java代码。Guava的目标是提供一种更加简洁、优雅的方式来处理常见的编程任务,并且在很多情况下...

    google Guava集合工具类(超实用)

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...

    Google Guava 官方教程 - v1.1.2018-07-22.pdf

    Google Guava 官方教程 v1.1 2018-07-22 https://github.com/tianbian224/GuavaLearning/blob/master/Google%20Guava%20%E5%AE%98%E6%96%B9%E6%95%99%E7%A8%8B%20-%20v1.1.pdf

    Google的Guava工具包

    Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...

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

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

    com.google.guava_1.6.0.jar.zip

    《深入解析Google Guava库:Ints模块》 在Java编程中,Google Guava库是一个不可或缺的工具集合,它提供了大量的高效、实用的类和方法,极大地提升了开发效率。本次我们将聚焦于Guava中的`Ints`模块,通过分析`...

    google-guava.jar

    《谷歌Guava库详解》 谷歌Guava,全称为Google Guava,是Google推出的一款Java库,它包含一系列基础工具类,旨在简化Java开发工作,提高代码效率和可维护性。Guava的核心特性包括集合框架、缓存、原始类型支持、...

Global site tag (gtag.js) - Google Analytics