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,脑子里一团乱麻...)。
第一遍先这样过了,以后再更加深入的理解和学习。
以上。