美文网首页
了解ExecutorService接口

了解ExecutorService接口

作者: 墨_0b54 | 来源:发表于2022-04-22 16:47 被阅读0次
    • 一个Executor,提供管理终止的方法和可以生成Future以跟踪一个或多个异步任务的进度的方法。
    • 可以关闭一个ExecutorService,这将导致它拒绝新任务。提供了两种不同的方法来关闭ExecutorService。
    • shutdown方法将允许先前提交的任务在终止之前执行,而shutdownNow方法阻止等待任务启动并尝试停止当前正在执行的任务。终止后,执行者没有正在执行的任务,没有等待执行的任务,也没有新的任务可以提交。应关闭未使用的ExecutorService以允许回收其资源。
    • 方法submit通过创建和返回可用于取消执行和或等待完成的Future扩展了Executor的execute方法。
    • 方法invokeAny和invokeAll执行最常用的批量执行形式,然后等待至少一个或全部完成。
    public interface ExecutorService extends Executor {
    
        //启动有序关闭,其中执行先前提交的任务,但不会接受新任务。如果已经关闭,调用没有额外的效果。
        //此方法不等待先前提交的任务完成执行。使用awaitTermination来做到这一点。
        void shutdown();
    
        //尝试停止所有正在执行的任务,停止等待任务的处理,并返回等待执行的任务列表。
        //此方法不等待主动执行的任务终止。使用awaitTermination来做到这一点。
        //除了尽最大努力停止处理正在执行的任务之外,没有任何保证.
        List<Runnable> shutdownNow();
    
        //如果此执行程序已关闭,则返回true。
        boolean isShutdown();
    
        //调用shutdown或shutdownNow后,如果所有任务都已完成,则返回true。
        boolean isTerminated();
    
        //在shutdown请求后阻塞,直到所有任务都完成执行,或者发生超时,或者当前线程被中断,以先发生者为准。
        boolean awaitTermination(long timeout, TimeUnit unit)
            throws InterruptedException;
    
        //提交一个有返回值的任务以供执行,并返回一个表示该任务待处理结果的 Future。 Future 的get方法将在成功完成后返回任务的结果。
        <T> Future<T> submit(Callable<T> task);
    
        //提交Runnable任务以执行并返回代表该任务的Future。Future的get方法将在成功完成后返回给定的result。
        <T> Future<T> submit(Runnable task, T result);
    
        //提交Runnable任务以执行并返回代表该任务的Future。Future 的get方法将在成功完成后返回null。
        Future<?> submit(Runnable task);
    
        //执行给定的任务,返回一个 Futures 列表,在所有完成时保存它们的状态和结果。
        <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
            throws InterruptedException;
    
        //执行给定的任务,当全部完成或超时到期时,返回保存其状态和结果的 Futures 列表。返回时,未完成的任务将被取消。
        <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接口

          本文链接:https://www.haomeiwen.com/subject/rednertx.html