Module  java.base
软件包  java.util.concurrent

Class AbstractExecutorService

  • All Implemented Interfaces:
    ExecutorExecutorService
    已知直接子类:
    ForkJoinPoolThreadPoolExecutor


    public abstract class AbstractExecutorService
    extends Object
    implements ExecutorService
    提供ExecutorService执行方法的默认实现。 此类实现submitinvokeAnyinvokeAll使用方法RunnableFuture通过返回newTaskFor ,其默认为FutureTask类此包中提供。 例如, submit(Runnable)的实现创建一个执行和返回的关联的RunnableFuture 子类可以覆盖newTaskFor方法返回RunnableFuture其他实现比FutureTask

    扩展示例 以下是自定义ThreadPoolExecutor使用CustomTask类而不是默认值FutureTask类的FutureTask

       public class CustomThreadPoolExecutor extends ThreadPoolExecutor { static class CustomTask<V> implements RunnableFuture<V> {...} protected <V> RunnableFuture<V> newTaskFor(Callable<V> c) { return new CustomTask<V>(c); } protected <V> RunnableFuture<V> newTaskFor(Runnable r, V v) { return new CustomTask<V>(r, v); } // ... add constructors, etc. } 
    从以下版本开始:
    1.5
    • 构造方法详细信息

      • AbstractExecutorService

        public AbstractExecutorService​()
    • 方法详细信息

      • newTaskFor

        protected <T> RunnableFuture<T> newTaskFor​(Runnable runnable,
                                                   T value)
        为给定的可运行和默认值返回一个 RunnableFuture
        参数类型
        T - 给定值的类型
        参数
        runnable - 正在包装的可运行任务
        value - 返回的未来的默认值
        结果
        一个 RunnableFuture ,当运行时,将运行底层的可运行程序,并且作为一个 Future将产生给定的值作为其结果,并提供取消基础任务
        从以下版本开始:
        1.6
      • newTaskFor

        protected <T> RunnableFuture<T> newTaskFor​(Callable<T> callable)
        为给定的可调用任务返回一个 RunnableFuture
        参数类型
        T - 可调用结果的类型
        参数
        callable - 正在包装的可调用任务
        结果
        一个 RunnableFuture ,当运行时,将调用底层可调用,并作为一个 Future ,将产生可调用的结果作为其结果,并提供取消基础任务
        从以下版本开始:
        1.6
      • submit

        public <T> Future<T> submit​(Runnable task,
                                    T result)
        说明从接口ExecutorService复制
        提交一个可运行的任务执行,并返回一个表示该任务的未来。 未来的get方法将在成功完成后返回给定的结果。
        Specified by:
        submit在接口 ExecutorService
        参数类型
        T - 结果的类型
        参数
        task - 要提交的任务
        result - 结果返回
        结果
        一个未来的代表,待完成任务
        异常
        RejectedExecutionException - 如果该任务无法安排执行
        NullPointerException - 如果任务为空
      • submit

        public <T> Future<T> submit​(Callable<T> task)
        说明从接口ExecutorService复制
        提交值返回任务以执行,并返回代表任务待处理结果的Future。 未来的get方法将在成功完成后返回任务的结果。

        如果您想立即阻止等待任务,您可以使用result = exec.submit(aCallable).get();表单的result = exec.submit(aCallable).get();

        注意: Executors类包括一组可以将其他常见的类似闭包的对象(例如PrivilegedAction)转换Callable表单的方法,以便它们可以提交。

        Specified by:
        submit在接口 ExecutorService
        参数类型
        T - 任务结果的类型
        参数
        task - 提交的任务
        结果
        一个未来的代表,待完成任务
        异常
        RejectedExecutionException - 如果该任务无法安排执行
        NullPointerException - 如果任务为空
      • invokeAny

        public <T> T invokeAny​(Collection<? extends Callable<T>> tasks)
                        throws InterruptedException,
                               ExecutionException
        说明从接口ExecutorService复制
        执行给定的任务,返回成功完成的结果(即,不抛出异常),如果有的话。 正常或异常退货后,尚未完成的任务将被取消。 如果在此操作进行过程中修改了给定的集合,则此方法的结果是未定义的。
        Specified by:
        invokeAny在接口 ExecutorService
        参数类型
        T - 从任务返回的值的类型
        参数
        tasks - 任务的收集
        结果
        其中一个任务返回的结果
        异常
        InterruptedException - 如果等待中断
        ExecutionException - 如果没有任务成功完成
      • invokeAny

        public <T> T invokeAny​(Collection<? extends Callable<T>> tasks,
                               long timeout,
                               TimeUnit unit)
                        throws InterruptedException,
                               ExecutionException,
                               TimeoutException
        说明从接口ExecutorService复制
        执行给定的任务,返回一个已经成功完成的结果(即,不抛出异常),如果在给定的时间超过之前有的话。 正常或异常退货后,尚未完成的任务将被取消。 如果在此操作进行过程中修改了给定的集合,则此方法的结果是未定义的。
        Specified by:
        invokeAny在接口 ExecutorService
        参数类型
        T - 从任务返回的值的类型
        参数
        tasks - 任务的收集
        timeout - 等待的最长时间
        unit - 超时参数的时间单位
        结果
        其中一个任务返回的结果
        异常
        InterruptedException - 如果在等待时中断
        ExecutionException - 如果没有任务成功完成
        TimeoutException - 如果在任务成功完成之前已经过了给定的超时
      • invokeAll

        public <T> List<Future<T>> invokeAll​(Collection<? extends Callable<T>> tasks)
                                      throws InterruptedException
        描述从接口ExecutorService复制
        执行给定的任务,返回持有他们的状态和结果的所有完成的期货列表。 Future.isDone()是返回列表的每个元素的true 请注意, 完成的任务可能会正常终止或抛出异常。 如果在此操作进行过程中修改了给定的集合,则此方法的结果是未定义的。
        Specified by:
        invokeAll在接口 ExecutorService
        参数类型
        T - 从任务返回的值的类型
        参数
        tasks - 任务的收集
        结果
        表示任务的期货列表,按照给定任务列表的迭代器产生的顺序顺序,每个都已完成
        异常
        InterruptedException - 如果在等待时中断,在这种情况下未完成的任务被取消
      • invokeAll

        public <T> List<Future<T>> invokeAll​(Collection<? extends Callable<T>> tasks,
                                             long timeout,
                                             TimeUnit unit)
                                      throws InterruptedException
        描述从接口ExecutorService复制
        执行给定的任务,返回在所有完成或超时到期时持有其状态和结果的期货列表,以先发生者为准。 Future.isDone()true对于返回列表的每个元素。 退货后,尚未完成的任务将被取消。 请注意, 完成的任务可能会正常终止或抛出异常。 如果在此操作进行过程中修改了给定的集合,则此方法的结果是未定义的。
        Specified by:
        invokeAll接口 ExecutorService
        参数类型
        T - 从任务返回的值的类型
        参数
        tasks - 任务的收集
        timeout - 等待的最长时间
        unit - 超时参数的时间单位
        结果
        一个表示任务的期货列表,按照给定任务列表的迭代器生成的顺序。 如果操作没有超时,每个任务都会完成。 如果超时,其中一些任务将不会完成。
        异常
        InterruptedException - 如果在等待时中断,在这种情况下未完成的任务被取消