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,脑子里一团乱麻...)。
第一遍先这样过了,以后再更加深入的理解和学习。
以上。
分享到:
相关推荐
这个工程是为了学习guava concurrent中的AbstractFuture而建立的,里面有可以运行的例子,再配合我的博客:https://blog.csdn.net/o1101574955/article/details/82889851,可以看明白guava concurrent的基本设计思路...
├─Google Guava 第01讲-Joiner详细介绍以及和Java8Collector对比.wmv ├─Google Guava 第02讲-Guava Splitter详细讲解以及实战练习.wmv ├─Google Guava 第03讲-Preconditions&Objects;&assert;讲解.wmv ├─...
**Google Guava官方教程** Google Guava 是一个广泛使用的 Java 库,它提供了一系列现代编程实用工具,旨在简化常见的编程任务。Guava 提供了集合框架的扩展、并发支持、缓存机制、字符串处理工具、I/O 工具以及...
在IT行业中,Google Guava库是一个非常强大的工具集,它为Java开发人员提供了一系列实用的集合、缓存、并发和I/O工具。本篇文章将详细探讨如何利用Guava库实现定时缓存功能,以提高应用的性能和效率。 首先,Guava...
通过阅读"Getting Started with Google Guava"、"JavaCachingwithGuava"、"Guava_for_Netflix_"和"guava-concurrent-slides"等文档,你可以深入理解Guava的各种特性和使用场景,从而在实际开发中更好地利用Guava提升...
《Getting Started with Google Guava》是Bill Bejeck所著,旨在帮助Java开发者通过Google Guava库编写更优质、更高效的代码。Bill Bejeck是一位拥有10年经验的资深软件工程师,专注于各种项目的开发工作。在写作...
Google Guava是Google开发的一个开源Java库,它包含了一系列高级且实用的集合类、缓存机制、并发工具、字符串处理、I/O工具等,极大地提升了Java开发者的工作效率。Guava的目标是通过提供一系列现代实用工具,帮助...
谷歌的Guava库是Java开发中的一个非常重要的开源项目,它提供了一系列的高效、实用的工具类,大大简化了常见的编程任务。Guava的核心特性包括集合框架、缓存、原生类型支持、并发库、字符串处理、I/O操作等。这个...
标签:google、guava、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
**Google Guava官方教程概述** Google Guava 是一个开源库,为Java开发人员提供了一组核心库,包括集合、缓存、并发工具、I/O工具、字符串处理、实用方法等。这个官方教程主要针对Guava库的使用进行详细介绍,帮助...
Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法...
Google Guava库是由Google开发的一个开源项目,旨在提供Java开发中常用的基础功能。它的目标是简化Java编程,为开发者提供更加清晰、高效的代码编写方式。通过使用Guava库,开发者可以不必在每次项目中重复编写相同...
**Google Guava简介** Google Guava 是一个广泛使用的开源库,为Java开发人员提供了一系列实用工具类和集合框架。这个库旨在简化常见的编程任务,提高代码的可读性和可维护性。Guava 提供了丰富的功能,包括缓存、...
Google Guava 是一个由Google提供的开源Java库,它包含了许多强大的工具类和集合类,这些类可以帮助开发者更高效地编写Java代码。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 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
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
**谷歌Guava库详解** 谷歌Guava库是一个广泛使用的Java库,它提供了许多核心库的实用工具类,包括集合、缓存、并发、I/O、字符串处理、泛型 utilities、错误处理、网络、数学运算以及类加载器支持等多个方面。Guava...
《深入解析Google Guava库:Ints模块》 在Java编程中,Google Guava库是一个不可或缺的工具集合,它提供了大量的高效、实用的类和方法,极大地提升了开发效率。本次我们将聚焦于Guava中的`Ints`模块,通过分析`...
《谷歌Guava库详解》 谷歌Guava,全称为Google Guava,是Google推出的一款Java库,它包含一系列基础工具类,旨在简化Java开发工作,提高代码效率和可维护性。Guava的核心特性包括集合框架、缓存、原始类型支持、...