package java.util.concurrent;
import java.util.List;
import java.util.Collection;/*** 这个一个Executor,提供了一些方法来管理任务终止以及创建一个<Future>对象去追踪一个或多个异步任务的执行过程** 一个ExecutorService对象可以被shut down,这回让它拒绝接收新的任务* 这里提供了两个方法去shut down一个ExecutorService:* 1. shutdown:允许之前已经提交的任务继续执行* 2. shutdownNow:禁止等待的任务执行,并且尝试终止正在执行的任务** 处于termination的exetutor:* 1. 没有正在执行的任务* 2. 没有等待任务* 3. 没有新的可被提交的任务* 一个没有被使用的ExecutorService应该被shut down 以允许对它进行资源回收** submit方法继承了<Executor>中的execute(Runnable)方法,它会创建并返回一个Future对象,这个对象可以用来取消执行或者等待其运行结束* invokeAny方法和invokeAll方法提供了对批量执行的最一般性的用法,它会执行一个任务集合,然后等待至少一个,或者全部执行完毕* <ExecutorCompletionService>类可以用来为这些方法定义一些个性化变量** <Executors>类为该包中的executor services提供了一些工厂方法*/
public interface ExecutorService extends Executor {/*** 已经提交的任务会顺序关闭,但是不会接受新的任务* 如果已经shut down了,那么再调用一次不会有什么反应** 这个方法不会等待之前提交的任务都执行完毕(已经执行的就继续执行,没开始执行的就算了),awaitTermination方法可以做这样的事情*/void shutdown();/*** 尝试stop所有正在执行的任务,终止等待任务的进程,并且将那些等待执行的任务放到列表里返回* 该方法不会等待正在执行的任务终止(terminate是一个正常流程中的状态),awaitTermination方法可以做这些** 不保证以最佳方式stop正在执行的任务,比如说,一个典型的实现会通过Thread.interrupt方法来取消任务,* 所以,如果一个任务在被中断时没有响应逻辑,那它可能永远都不能正常终止* @return*/List<Runnable> shutdownNow();/*** 判断一个Executor是否已经被shutdown*/boolean isShutdown();/*** 如果在调用shut down只会所有的任务都执行完毕了,则返回true* 注意,只有先调用了shutdown方法或者shutdownNow方法,该方法才可能返回true*/boolean isTerminated();/*** 阻塞,直到调用一个shutdown之后所有任务执行完毕,或者超时,或者当前线程被中断* 如果executor进入了终止状态则返回true* 如果在终止状态前超时,则返回false*/boolean awaitTermination(long timeout, TimeUnit unit)throws InterruptedException;/*** 提交一个带有返回值的任务去执行,并且返回一个Future对象表示这个任务的处理中的结果* Future的get方法可以获取任务执行结果,如果任务成功执行完毕的话** 如果task是null,则会抛出空指针异常*/<T> Future<T> submit(Callable<T> task);/*** Runnable是没有泛型的,所以这里传入一个类型参数,其余的和上面那个一样*/<T> Future<T> submit(Runnable task, T result);/*** 如果成功了,返回的是null*/Future<?> submit(Runnable task);/*** 执行给定的任务集合,返回一个Future的列表以获取任务的状态以及结果,该集合中的Future的isDone方法都返回true* 注意,一个completed的任务可能是正常结束,也可能是抛异常了** 如果任务集合在执行过程中被修改了,那这个方法的结果是undefined** 如果一个任务在等待的时候被中断,那会抛出InterruptedException,并且所有未完成的任务都会被取消* 如果tasks为空或者其中任一元素为空,则抛出NullPointerException* 如果任一任务不能被调度,则抛出RejectedExecutionException*/<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)throws InterruptedException;/*** 与上一个相比,就是增加了时限,在到达时间限制的时候,未完成的任务都会被取消*/<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,long timeout, TimeUnit unit)throws InterruptedException;/*** 返回一个成功执行完毕的任务的返回值(比如说没有抛异常的)* 如果有了正常或者异常返回,没有完成的任务将会被取消* 如果任务集合在运行时被更改,那么这个方法的返回值是undefined* @param tasks* @param <T>* @return* @throws InterruptedException 如果任务在等待时被中断* @throws ExecutionException 如果没有任务成功完成* @throws 如果任务无法被调度执行*/<T> T invokeAny(Collection<? extends Callable<T>> tasks)throws InterruptedException, ExecutionException;/*** 与上一个方法相比,多了一个时间限制,以及一个TimeoutException* @throws InterruptedException if interrupted while waiting* @throws NullPointerException if tasks, or unit, or any element* task subject to execution is {@code null}* @throws 在时间限制内没有任务成功完成* @throws ExecutionException if no task successfully completes* @throws RejectedExecutionException if tasks cannot be scheduled* for execution*/<T> T invokeAny(Collection<? extends Callable<T>> tasks,long timeout, TimeUnit unit)throws InterruptedException, ExecutionException, TimeoutException;
}
详细解决方案
java.util.concurrent.ExecutorService
热度:17 发布时间:2024-01-25 12:09:18.0
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- 请教一个关于链接后缀的有关问题(java web 应用)
- java 系统单点登录解决方案
- java.lang.NumberFormatException: For input string: "id"该如何处理
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- java web 受阻
- java.lang.IllegalStateException: No output folder,该怎么解决
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccess,该如何解决
- java 乱码有关问题 急求大神
- java EE错误如何解决阿,都是过了,没有能解决的!
- java 工程打包有关问题 多谢各位大神!多谢
- JAVA WEB导航条,该怎么处理
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password,该如何处理
- java 中Node 有关问题
- 关于 java 引述传递和值传递,你的知否
- 吐了,java Timer 终止不了。
- Java Web 学习中有关问题,请高手指教
- java web中的url地址小疑点。
- java web开发解决办法
- java.lang.NullPointerException解决方法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题
- java web项目上的一些文件