美文网首页JUC并发包
Executor家族-Executor,ExecutorServ

Executor家族-Executor,ExecutorServ

作者: 于情于你 | 来源:发表于2020-12-22 13:25 被阅读0次
    image.png

    Executor:Executor家族的首长。父接口,其中只有一个方法

    // 在将来的某个时间执行给定的命令
    void execute(Runnable command);
    

    ExecutorService:Executor的扩展接口,包含的所有方法如下:


    image.png
    // 启动有序关闭,在该关闭中执行先前提交的任务,但不接受任何新任务。如果已经关闭,则调用不会产生任何其他影响。
    void shutdown();
    
    // 尝试停止所有正在执行的任务,暂停正在等待的任务的处理,并返回正在等待执行的任务的列表。
    List<Runnable> shutdownNow();
    
    // 如果该执行程序已关闭,则返回true
    boolean isShutdown();
    
    // 如果所有任务在关闭后都已完成,则返回true
    // 请注意,除非首先调用shutdown或code shutdownNow,否则isTerminated永远不会是true
    boolean isTerminated();
    
    // 当等待超过设定时间时,会监测 ExecutorService是否已经关闭,若关闭则返回true,否则返回false
    boolean awaitTermination(long timeout, TimeUnit unit)
            throws InterruptedException;
    
    // 提交一个callable任务,并返回一个一个代表任务执行结果的Future
    <T> Future<T> submit(Callable<T> task);
    
     //当task执行成功的时候future.get()返回result  
    <T> Future<T> submit(Runnable task, T result);  
    
     //当task执行成功的时候future.get()返回null  
    Future<?> submit(Runnable task);  
    
    // 批量执行任务,并返回执行结果的Future的List。
    // 如果在进行此操作时修改了给定的任务集合,则此方法的结果不确定。
    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)  throws InterruptedException;
    
    // 批量执行任务,并返回执行结果的Future的List。指定超时时间
    // 如果操作没有超时,每个任务都会完成。 如果超时,其中一些任务将不会完成。也就拿不到任务的执行结果
    <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;
    

    相关文章

      网友评论

        本文标题:Executor家族-Executor,ExecutorServ

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