参考博客: https://www.jianshu.com/p/c41e942bcd64, https://blog.csdn.net/mazhimazh/article/details/19243889 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,TimeUnit unit, BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler) 核心线程数, 最大线程数, 线程空闲存活时间(仅适用于超过核心线程数的线程), 时间单位, 阻塞队列, 队列已满时的处理方式 RejectedExecutionHandler: AbortPolicy, 抛出异常(默认) CallerRunsPolicy, 由调用线程处理该任务 DiscardPolicy, 丢弃新任务 DiscardOldestPolicy, 丢弃队列头的任务, 继续处理新任务 prestartCoreThread() 创建一个空闲线程, 等待任务到达 prestartAllCoreThreads() 创建核心线程数量的空闲线程, 等待任务到达 线程池(Executors 提供静态方法创建线程池) : newCachedThreadPool() 创建一个线程池,根据需要创建新的线程,但在可用时将重用先前构建的线程 newFixedThreadPool(int nThreads) 创建一个指定线程数的线程池 newScheduledThreadPool(int corePoolSize) 创建一个指定线程数的线程池, 周期性的运行 newSingleThreadExecutor() 创建一个单线程的线程池 newWorkStealingPool(int parallelism) 创建一个限定并发数的线程池 (JDK1.8新增) ExecutorService 线程池管理部分API isShutdown() ExecutorService已关闭 isTerminated() 不调用shutdown()或shutdownNow(), 永远为false, 关闭所有任务后为true shutdown() 不再接受新的任务, 已提交的任务结束后, 则关闭ExecutorService shutdownNow() 尝试结束执行中的线程, 并跳过已提交但未执行的任务, 无法保证关闭正在执行的任务 execute(Runnable) 执行实现Runnable接口的任务, 无返回 submit(Runnable) 执行实现Runnable接口的任务,返回Future对象, 任务结束future.get()为Null submit(Callable) 执行实现Callable接口的任务, 返回Future对象, future.get() 获取任务返回结果 invokeAny(Collection<? extends Callable<T>>) 执行实现Callable接口的集合任务, 随机返回一个任务的执行结果 invokeAll(Collection<? extends Callable<T>>) 执行实现Callable接口的集合任务, 返回所有任务的执行结果 ScheduledExecutorService 周期执行任务API scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) 在initialDelay延迟后执行第一个任务, 上一个任务执行完毕后delay时间后, 再执行任务, 固定延迟 scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) 在initialDelay延迟后执行第一个任务,任务执行时间> period, 则任务完成立即执行, 否则, period时间后, 执行
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交