java多线程的Executor中定义了一个execut方法,ExecutorService接口继承了Executor接口,并进行了功能的扩展组合,定义了shutdown,shutdownNow,submit,invokeAll,invokeAny:而AbstractExecutorService类是一个模板类,实现了ExecutorService接口,对于公共行为进行了实现,同时对于具体的行为采用钩子函数的形式交由子类实现,它主要定义了invokeAll,invokeAny方法,具体的exec…
Future And Callable 引用 http://www.cnblogs.com/dolphin0520/p/3949310.html http://www.iocoder.cn/JUC/ Future用于返回任务,带有返回值 Callable和Runnable 的区别 Runnable是在JDK1.0版本引入的,唯一的一个方法是void run().多插入一句,JDK设计者设计的类是真的强从1.0用到现在还在用 Callable是在JDK1.5版本引入的,唯一的一个方法是void c…
Executor Executor仅仅是一个简单的接口,其定义如下 public interface Executor { void execute(Runnable command); } 作为一个简单的线程池的话,实现这个接口就可以使用了.不过单单这样的话,无法使用Future功能. ExecutorService public interface ExecutorService extends Executor { void shutdown(); List<Runnable> shut…
首先介绍两个重要的接口,Executor和ExecutorService,定义如下: public interface Executor { void execute(Runnable command); } public interface ExecutorService extends Executor { //不再接受新任务,待所有任务执行完毕后关闭ExecutorService void shutdown(); //不再接受新任务,直接关闭ExecutorService,返回没有执行的任…
UML简要类图关系: 下面详细看一下三者的区别: Executor vs ExecutorService vs Executors 正如上面所说,这三者均是 Executor 框架中的一部分.Java 开发者很有必要学习和理解他们,以便更高效的使用 Java 提供的不同类型的线程池.总结一下这三者间的区别,以便大家更好的理解: Executor 和 ExecutorService 这两个接口主要的区别是:ExecutorService 接口继承了 Executor 接口,是 Executor 的…
java.util.concurrent.Executor, java.util.concurrent.ExecutorService, java.util.concurrent. Executors 这三者均是 Java Executor 框架的一部分,用来提供线程池的功能.因为创建和管理线程非常心累,并且操作系统通常对线程数有限制,所以建议使用线程池来并发执行任务,而不是每次请求进来时创建一个线程.使用线程池不仅可以提高应用的响应时间,还可以避免”java.lang.OutOfMemoryE…
ExecutorService接口继承于Executor接口,主要提供以下额外功能: 管理终结 产生Future对象,用于跟踪一个或多个任务的进度.   ExecutorService可以被shut down.这个操作,将导致它拒绝接受新的任务.它提供了两个关闭EexecutorService的方法. shutdown():运行之前提交的任务,在ExecutorService关闭之前都将被执行.注意:ExecutorService只保证已提交的任务都启动,至于有没有完成,就不管了,只要都启动了,…
Executor public interface Executor { void execute(Runnable command); } ExecutorService ExecutorService是一个接口,继承了Executor接口,定义了一些生命周期的方法 public interface ExecutorService extends Executor { //顺次地关闭ExecutorService,停止接收新的任务,等待所有已经提交的任务执行完毕之后,关闭ExecutorSer…
先看一个Executor接口,该接口只有一个方法:void execute(Runnable command),用于在未来某个时刻提交一个command,这个command可以被提交到一个新的线程,或者一个线程池,或者在调用线程中. ExecutorService接口继承了Executor接口.主要是增加了shutDown.shutDownNow.invokeAll.invokeAny和submit方法. invokeAny(Collection<? extends Callable<T>…
上一篇讲了Executor接口的设计,目的是将任务的运行和任务的提交解耦.能够隐藏任务的运行策略.这篇说说ExecutorService接口.它扩展了Executor接口,对Executor的生命周期进行管理.并进行了进一步的扩展. Executor负责执行任务. 它的生命周期有3个:执行,关闭和已终止. 在执行的不论什么时刻,有些 任务可能已经完毕,有些可能正在执行,有些可能正在队列中等待执行.所以假设要关闭Executor的话.就有多种方式,比方优雅平滑的关闭,当执行关闭时就不在接受新的任务…