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 实现定时缓存功能
Getting Started with Google Guava, guava的技术参考文档
Google Guava 官方教程 - 详情:https://blog.csdn.net/Dream_Weave/article/details/86252213
Google Guava 官方教程 - v1.1
google guava框架,包括Getting Started with Google Guava、google cache、base、io等介绍
Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你...
Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和验证的实用方法...
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
Getting Started with Google Guava code
此文档为Guava中最流行和最强大的功能,提供更具可读性和解释性的说明
Getting Started with Google Guava.pdf -Bill Bejeck
谷歌guava的jar包和源码,很值得收藏。直接通过exlipse的build path,导入jar包和源码,可供开发和学习
标签:google、guava、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Google Guava 官方教程
com.google.guava_1.6.0.jar.zip com.google.guava_1.6.0.jar.zip
Google Guava 官方教程,电子书,epub格式,可用在手机端阅读
19的guava包 希望对大家有帮助
标签:google、guava、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。