java 线程池之ExecutorService

ExecutorService的介绍

一个执行器,它提供线程池终止的方法,以及可以产生Future来跟踪一个或多个异步任务进度的方法。

ExecutorService 的继承关系

如下图所示,ExecutorService 接口继承Executor接口,此接口融合了Executor接口的基本方法。并在次基础上延伸出线程池管理的方法和有返回值的执行任务。
在这里插入图片描述

ExecutorService接口定义的方法


package java.util.concurrent;
import java.util.List;
import java.util.Collection;



public interface ExecutorService extends Executor {

    /**
     * 启动程序关闭,线程池不会在接收新的任务,但是会将线程池中剩余未执行的任务全部执行完成后,彻底关闭线程池。
     * 此方法不会等待主动执行的任务终止。使用awaitTermination来完成该操作。
     */
    void shutdown();

    /**
     * 立马关闭线程池,调用此方法后,线程池中正在执行的任务会尝试中断,未执行的任务会从队列中出栈。返回正在等待执行的任务列表。 
     * 此方法不会等待主动执行的任务终止。使用awaitTermination来完成该操作。
     */
    List<Runnable> shutdownNow();

    /**
     * 判读线程池是否关闭
     */
    boolean isShutdown();

    /**
     * 判断线程池是停止
     */
    boolean isTerminated();

    /**
     * 阻塞等到线程池中的所有任务完全执行触发线程池停止操作。设置等待时间,超过此时间后,会抛出中断异常
     */
    boolean awaitTermination(long timeout, TimeUnit unit)
        throws InterruptedException;

    /**
     * 
     * 提交可运行任务以供执行,并返回表示该任务的Future。Future的get方法将在成功完成后返回给定的结果。
     */
    <T> Future<T> submit(Callable<T> task);

    /**
     * 提交可运行任务以供执行,并返回表示该任务的Future。Future的get方法将在成功完成后返回给定的结果。
     */
    <T> Future<T> submit(Runnable task, T result);

    /**
     * 提交可运行任务以供执行,并返回表示该任务的Future。Future的get方法在成功完成后将返回null。
     */
    Future<?> submit(Runnable task);

    /**
     * 执行给定的任务,当所有任务都完成时,返回一个包含其状态和结果的Future列表。Future.isDone()对于返回列表的每个元素都是true。请注意,已完成的任务可以正常终止,也可以通过抛出异常终止。如果在执行此操作时修改了给定的集合,则此方法的结果未定义。
     */
    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
        throws InterruptedException;

 
 	/**
 	*执行给定的任务,当所有任务完成或超时到期时(以先发生者为准),返回一个包含其状态和结果的Future列表。Future.isDone()对于返回列表的每个元素都是true。返回后,未完成的任务将被取消。请注意,已完成的任务可以正常终止,也可以通过抛出异常终止。如果在执行此操作时修改了给定的集合,则此方法的结果未定义。
 	*/
    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
                                  long timeout, TimeUnit unit)
        throws InterruptedException;

    /**
     * 执行给定的任务列表,执行成功一个就返回,注意可以执行成功多个任务
     */
    <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;
}

总结

ExecutorService 接口是对Executor接口的增强,提供了线程池管控的方法,并对任务提交的方法进行了增强,接下来将讲解此接口的子类信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值