ExecutorService

290 阅读2分钟

ExecutorService,多线程任务执行服务接口,继承自Executor接口,在Executor接口上扩展了任务执行方法。

1.shutdown 方法:此方法调用后,将不再接受新任务,直到原有任务全部执行完毕,再释放资源
void shutdown();
2.shutdownNow 方法:此方法调用后,将不再接受新任务,同时偿试中断当前执行任务,并返回未执行任务列表
List<Runnable> shutdownNow();
3.isShutdown 方法:若此任务执行器已经调用shutdown方法,并且释放资源,则返回true,否则返回false
boolean isShutdown();
4.isTerminated 方法:若所有任务全部执行完毕,则返回true,否则返回false,注:如果在之前没有调用shutdown 或者shutdownNow 方法,则此方法永远为false
boolean isTerminated();
5.awaitTermination 方法:等待所有现有任务完成。在调用shutdown 或者shutdownNow 方法后,调用此方法,可以等待所有当前任务完成,如果在特定时间内没有完成任务,则会发生中断
boolean awaitTermination(long timeout, TimeUnit unit)
        throws InterruptedException;
6.submit 方法:提交任务执行,返回一个Feature 用于追踪任务执行结果,若为两个参数,则参数result 为返回结果
<T> Future<T> submit(Callable<T> task);
<T> Future<T> submit(Runnable task, T result);
Future<?> submit(Runnable task);
7.invokeAll 方法:传入一个任务列表进行执行,返回一个Future 列表用于追踪返回结果,如果在执行期间超时,则取消所有未完成任务
<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;
7.invokeAny 方法:传入一个任务列表进行执行,只要有任意一个任务执行完毕,则立即返回其执行结果,不用等待其他任务执行完毕,如果在这个期间有任务发生异常,则取消剩余未完成任务
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
        throws InterruptedException, ExecutionException;
<T> T invokeAny(Collection<? extends Callable<T>> tasks,
                    long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException;