类 DevThreadPool

    • 方法概要

      所有方法 静态方法 实例方法 具体方法 
      修饰符和类型 方法 说明
      boolean awaitTermination​(long timeout, java.util.concurrent.TimeUnit unit)
      请求关闭、发生超时或者当前线程中断 无论哪一个首先发生之后, 都将导致阻塞, 直到所有任务完成执行
      void execute​(java.lang.reflect.Method method, java.lang.Object object)
      通过反射, 调用某个类的方法
      void execute​(java.lang.Runnable runnable)
      加入到线程池任务队列
      void execute​(java.util.List<java.lang.Runnable> runnables)
      加入到线程池任务队列
      static int getCalcThreads()
      获取线程数
      static int getThreads()
      获取线程数
      <T> java.util.List<java.util.concurrent.Future<T>> invokeAll​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
      执行给定的任务 当所有任务完成时, 返回保持任务状态和结果的 Future 列表 返回列表的所有元素的 Future.isDone()true 注意, 可以正常地或通过抛出异常来终止已完成任务 如果正在进行此操作时修改了给定的 collection, 则此方法的结果是不确定的
      <T> java.util.List<java.util.concurrent.Future<T>> invokeAll​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit)
      执行给定的任务 当所有任务完成或超时期满时 ( 无论哪个首先发生 ), 返回保持任务状态和结果的 Future 列表 返回列表的所有元素的 Future.isDone()true 一旦返回后, 即取消尚未完成的任务 注意, 可以正常地或通过抛出异常来终止已完成任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的
      <T> T invokeAny​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
      执行给定的任务 如果某个任务已成功完成 ( 也就是未抛出异常 ), 则返回其结果 一旦正常或异常返回后, 则取消尚未完成的任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的
      <T> T invokeAny​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks, long timeout, java.util.concurrent.TimeUnit unit)
      执行给定的任务 如果在给定的超时期满前某个任务已成功完成 ( 也就是未抛出异常 ), 则返回其结果 一旦正常或异常返回后, 则取消尚未完成的任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的
      boolean isShutdown()
      判断线程池是否已关闭 ( isShutDown 当调用 shutdown() 方法后返回为 true )
      boolean isTerminated()
      若关闭后所有任务都已完成, 则返回 true 注意除非首先调用 shutdown 或 shutdownNow, 否则 isTerminated 永不为 true isTerminated 当调用 shutdown() 方法后, 并且所有提交的任务完成后返回为 true
      java.util.concurrent.ScheduledFuture<?> schedule​(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)
      延迟执行 Runnable 命令
      <V> java.util.concurrent.ScheduledFuture<V> schedule​(java.util.concurrent.Callable<V> callable, long delay, java.util.concurrent.TimeUnit unit)
      延迟执行 Callable 命令
      java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay​(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)
      延迟并以固定休息时间循环执行命令
      java.util.concurrent.ScheduledFuture<?> scheduleWithFixedRate​(java.lang.Runnable command, long initialDelay, long period, java.util.concurrent.TimeUnit unit)
      延迟并循环执行命令
      void shutdown()
      shutdown 会等待所有提交的任务执行完成, 不管是正在执行还是保存在任务队列中的已提交任务 待以前提交的任务执行完毕后关闭线程池 启动一次顺序关闭, 执行以前提交的任务, 但不接受新任务 如果已经关闭, 则调用没有作用
      java.util.List<java.lang.Runnable> shutdownNow()
      shutdownNow 会尝试中断正在执行的任务 ( 其主要是中断一些指定方法如 sleep 方法 ), 并且停止执行等待队列中提交的任务 试图停止所有正在执行的活动任务, 暂停处理正在等待的任务, 并返回等待执行的任务列表 无法保证能够停止正在处理的活动执行任务, 但是会尽力尝试
      java.util.concurrent.Future<?> submit​(java.lang.Runnable task)
      提交一个 Runnable 任务用于执行
      <T> java.util.concurrent.Future<T> submit​(java.lang.Runnable task, T result)
      提交一个 Runnable 任务用于执行
      <T> java.util.concurrent.Future<T> submit​(java.util.concurrent.Callable<T> task)
      提交一个 Callable 任务用于执行 如果想立即阻塞任务的等待, 则可以使用 result = threadPool.submit(aCallable).get(); 形式的构造
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • DevThreadPool

        public DevThreadPool​(int threadNumber)
        构造函数
        参数:
        threadNumber - 线程数量
      • DevThreadPool

        public DevThreadPool​(java.util.concurrent.ExecutorService threadPool)
        构造函数
        参数:
        threadPool - ExecutorService
    • 方法详细资料

      • getThreads

        public static int getThreads()
        获取线程数
        返回:
        getCalcThreads()
      • getCalcThreads

        public static int getCalcThreads()
        获取线程数
        返回:
        自动计算 CPU 核心数
      • execute

        public void execute​(java.lang.Runnable runnable)
        加入到线程池任务队列
        参数:
        runnable - 线程
      • execute

        public void execute​(java.util.List<java.lang.Runnable> runnables)
        加入到线程池任务队列
        参数:
        runnables - 线程集合
      • execute

        public void execute​(java.lang.reflect.Method method,
                            java.lang.Object object)
        通过反射, 调用某个类的方法
        参数:
        method - 方法
        object - 对象
      • shutdown

        public void shutdown()
        shutdown 会等待所有提交的任务执行完成, 不管是正在执行还是保存在任务队列中的已提交任务 待以前提交的任务执行完毕后关闭线程池 启动一次顺序关闭, 执行以前提交的任务, 但不接受新任务 如果已经关闭, 则调用没有作用
      • shutdownNow

        public java.util.List<java.lang.Runnable> shutdownNow()
        shutdownNow 会尝试中断正在执行的任务 ( 其主要是中断一些指定方法如 sleep 方法 ), 并且停止执行等待队列中提交的任务 试图停止所有正在执行的活动任务, 暂停处理正在等待的任务, 并返回等待执行的任务列表 无法保证能够停止正在处理的活动执行任务, 但是会尽力尝试
        返回:
        List
      • isShutdown

        public boolean isShutdown()
        判断线程池是否已关闭 ( isShutDown 当调用 shutdown() 方法后返回为 true )
        返回:
        true yes, false no
      • isTerminated

        public boolean isTerminated()
        若关闭后所有任务都已完成, 则返回 true 注意除非首先调用 shutdown 或 shutdownNow, 否则 isTerminated 永不为 true isTerminated 当调用 shutdown() 方法后, 并且所有提交的任务完成后返回为 true
        返回:
        true yes, false no
      • awaitTermination

        public boolean awaitTermination​(long timeout,
                                        java.util.concurrent.TimeUnit unit)
                                 throws java.lang.InterruptedException
        请求关闭、发生超时或者当前线程中断 无论哪一个首先发生之后, 都将导致阻塞, 直到所有任务完成执行
        参数:
        timeout - 最长等待时间
        unit - 时间单位
        返回:
        true 请求成功, false 请求超时
        抛出:
        java.lang.InterruptedException - 终端异常
      • submit

        public <T> java.util.concurrent.Future<T> submit​(java.util.concurrent.Callable<T> task)
        提交一个 Callable 任务用于执行 如果想立即阻塞任务的等待, 则可以使用 result = threadPool.submit(aCallable).get(); 形式的构造
        类型参数:
        T - 泛型
        参数:
        task - 任务
        返回:
        表示任务等待完成的 Future, 该 Future 的 get 方法在成功完成时将会返回该任务的结果
      • submit

        public <T> java.util.concurrent.Future<T> submit​(java.lang.Runnable task,
                                                         T result)
        提交一个 Runnable 任务用于执行
        类型参数:
        T - 泛型
        参数:
        task - 任务
        result - 返回的结果
        返回:
        表示任务等待完成的 Future, 该 Future 的 get 方法在成功完成时将会返回该任务的结果
      • submit

        public java.util.concurrent.Future<?> submit​(java.lang.Runnable task)
        提交一个 Runnable 任务用于执行
        参数:
        task - 任务
        返回:
        表示任务等待完成的 Future, 该 Future 的 get 方法在成功完成时将会返回 null 结果
      • invokeAll

        public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
                                                                     throws java.lang.InterruptedException
        执行给定的任务 当所有任务完成时, 返回保持任务状态和结果的 Future 列表 返回列表的所有元素的 Future.isDone()true 注意, 可以正常地或通过抛出异常来终止已完成任务 如果正在进行此操作时修改了给定的 collection, 则此方法的结果是不确定的
        类型参数:
        T - 泛型
        参数:
        tasks - 任务集合
        返回:
        表示任务的 Future 列表, 列表顺序与给定任务列表的迭代器所生成的顺序相同, 每个任务都已完成
        抛出:
        java.lang.InterruptedException - 如果等待时发生中断, 在这种情况下取消尚未完成的任务
      • invokeAll

        public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
                                                                            long timeout,
                                                                            java.util.concurrent.TimeUnit unit)
                                                                     throws java.lang.InterruptedException
        执行给定的任务 当所有任务完成或超时期满时 ( 无论哪个首先发生 ), 返回保持任务状态和结果的 Future 列表 返回列表的所有元素的 Future.isDone()true 一旦返回后, 即取消尚未完成的任务 注意, 可以正常地或通过抛出异常来终止已完成任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的
        类型参数:
        T - 泛型
        参数:
        tasks - 任务集合
        timeout - 最长等待时间
        unit - 时间单位
        返回:
        表示任务的 Future 列表, 列表顺序与给定任务列表的迭代器所生成的顺序相同 如果操作未超时, 则已完成所有任务, 如果确实超时了, 则某些任务尚未完成
        抛出:
        java.lang.InterruptedException - 如果等待时发生中断, 在这种情况下取消尚未完成的任务
      • invokeAny

        public <T> T invokeAny​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
                        throws java.lang.InterruptedException,
                               java.util.concurrent.ExecutionException
        执行给定的任务 如果某个任务已成功完成 ( 也就是未抛出异常 ), 则返回其结果 一旦正常或异常返回后, 则取消尚未完成的任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的
        类型参数:
        T - 泛型
        参数:
        tasks - 任务集合
        返回:
        某个任务返回的结果
        抛出:
        java.lang.InterruptedException - 如果等待时发生中断
        java.util.concurrent.ExecutionException - 如果没有任务成功完成
      • invokeAny

        public <T> T invokeAny​(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
                               long timeout,
                               java.util.concurrent.TimeUnit unit)
                        throws java.lang.InterruptedException,
                               java.util.concurrent.ExecutionException,
                               java.util.concurrent.TimeoutException
        执行给定的任务 如果在给定的超时期满前某个任务已成功完成 ( 也就是未抛出异常 ), 则返回其结果 一旦正常或异常返回后, 则取消尚未完成的任务 如果此操作正在进行时修改了给定的 collection, 则此方法的结果是不确定的
        类型参数:
        T - 泛型
        参数:
        tasks - 任务集合
        timeout - 最长等待时间
        unit - 时间单位
        返回:
        某个任务返回的结果
        抛出:
        java.lang.InterruptedException - 如果等待时发生中断
        java.util.concurrent.ExecutionException - 如果没有任务成功完成
        java.util.concurrent.TimeoutException - 如果在所有任务成功完成之前给定的超时期满
      • schedule

        public java.util.concurrent.ScheduledFuture<?> schedule​(java.lang.Runnable command,
                                                                long delay,
                                                                java.util.concurrent.TimeUnit unit)
        延迟执行 Runnable 命令
        参数:
        command - 命令
        delay - 延迟时间
        unit - 单位
        返回:
        表示挂起任务完成的 ScheduledFuture, 并且其 get() 方法在完成后将返回 null
      • schedule

        public <V> java.util.concurrent.ScheduledFuture<V> schedule​(java.util.concurrent.Callable<V> callable,
                                                                    long delay,
                                                                    java.util.concurrent.TimeUnit unit)
        延迟执行 Callable 命令
        类型参数:
        V - 泛型
        参数:
        callable - 命令
        delay - 延迟时间
        unit - 时间单位
        返回:
        可用于提取结果或取消的 ScheduledFuture
      • scheduleWithFixedRate

        public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedRate​(java.lang.Runnable command,
                                                                             long initialDelay,
                                                                             long period,
                                                                             java.util.concurrent.TimeUnit unit)
        延迟并循环执行命令
        参数:
        command - 命令
        initialDelay - 首次执行的延迟时间
        period - 连续执行之间的周期
        unit - 时间单位
        返回:
        表示挂起任务完成的 ScheduledFuture, 并且其 get() 方法在取消后将抛出异常
      • scheduleWithFixedDelay

        public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay​(java.lang.Runnable command,
                                                                              long initialDelay,
                                                                              long delay,
                                                                              java.util.concurrent.TimeUnit unit)
        延迟并以固定休息时间循环执行命令
        参数:
        command - 命令
        initialDelay - 首次执行的延迟时间
        delay - 每一次执行终止和下一次执行开始之间的延迟
        unit - 时间单位
        返回:
        表示挂起任务完成的 ScheduledFuture, 并且其 get() 方法在取消后将抛出异常