public interface ExecutorService extends Executor {
// 优雅地关闭:先前提交的任务会继续执行完成,但不接受新的任务。
// 对于已关闭的ExecutorService没有影响。
void shutdown();
// 强行关闭:试图停止所有正在执行的任务,挂起等待执行的任务,返回等待执行任务的清单,而不是被中断任务的清单。
// 不能保证停止当前的任务会成功:典型的实现是通过调用Thread.interrupt()方法,所以不能回应该方法的任务将无法关闭。
List<Runnable> shutdownNow();
// 该线程池是否已关闭。在调用了shutdown()或shutdownNow()方法后,该方法返回true,此时线程池可能并未终止,调用isTerminated()为false。
boolean isShutdown();
// 该线程池是否终止。只有调用shutdown()或shutdownNow()一定时间后,该方法才可能返回true
boolean isTerminated();
// 等待线程池终止。在所有任务执行完成,或者超时,或者当前线程被中断前,该方法一直阻塞。
boolean awaitTermination(long timeout, TimeUnit unit)
throws InterruptedException;
// 提交一个有返回结果的任务。如果成功完成,Future的get()方法会返回执行结果。
// Executors包含一系列方法,能够把其它普通的closure-like对象,转化成可以执行的Callable对象。
<T> Future<T> submit(Callable<T> task);
// 和上面方法类似。Runnable没有返回值,我们可以提供个预设值result,如果任务成功完成,将返回该result。
<T> Future<T> submit(Runnable task, T result);
// 同上。如果成功完成,Future.get()返回null。
Future<?> submit(Runnable task);
// 执行指定的任务集,所有的任务完成后,返回一个保存了每个执行结果的Future集。
// 任务完成:可能是正常完成或者抛出异常。
// 可能的异常:InterruptedException: 被中断,没有完成的任务会被取消;
// NullPointerException: tasks为null,或者里面的元素为null
// RejectedExecutionException: 某个任务被拒绝执行
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
throws InterruptedException;
// 和上面类似,区别是加了时间限制:超时会返回,未完成的任务会取消。
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
throws InterruptedException;
// 执行指定的任务集,有一个任务执行成功后就返回该结果。正常返回或抛异常,没有完成的任务会被取消。
// 如果没有任务执行成功,则抛出ExecutionException
// 如果tasks为空,则抛出IllegalArgumentException
<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;
分享到:
相关推荐
集合源码分析 Java8特性 [TOC] 1. Lambda 表达式 与传统匿名内部类写法的对比 无返回值 // 传统写法 new Thread(new Runnable() { @Override public void run() { System.out.println("worker thread is running"); ...
程序猿学社的GitHub,欢迎Star ...本文已记录到github,形成...源码分析2.1 第一步,实现Callable接口2.2 FutureTask类结构图2.3 RunableFuture接口2.4 Runnable接口2.5 Future接口2.6 FutureTask源码分析后记 前言 通过上
作为爬虫框架,它使用httpclient作为获取网页工具、使用Jsoup作为分析页面定位抓取内容、使用ExecutorService线程池作为定时增量抓取、Jdiy作为持久层框架。不熟悉这些名词的同学们可以先行百度一下这些都是什么,起...
ExecutorService接口:提供了异步执行任务能力的执行器 ScheduledExecutorService接口:提供了执行定时任务的能力 EventExecutorGroup接口:ExecutorService的分组接口 AbstractEventExecutorGroup:...
集合源码分析 2020年深圳java打工仔找工作记录帖,有一段时间的社畜了,所以直奔主题, 找的资料都是面试常用的,整理一下,希望能帮到大家 主要三个部分 1.搜集面试题目 2.java资料 3 找工作日期记录,看从准备工作开始,...
├─第一阶段 │ 源码+ppt.rar ...ExecutorService讲解_.mp4 高并发编程第三阶段39讲 ThreadPoolExecutor七大构造参数详细讲解_.mp4 高并发编程第三阶段40讲 ThreadPoolExecutor关闭(很重要)精讲...
├─第一阶段 │ 源码+ppt.rar ...ExecutorService讲解_.mp4 高并发编程第三阶段39讲 ThreadPoolExecutor七大构造参数详细讲解_.mp4 高并发编程第三阶段40讲 ThreadPoolExecutor关闭(很重要)精讲...
3)使用了线程池ExecutorService mThreadPool技术 4)使用了Semaphore 信号来控制变量按照先后顺序执行,避免空指针的问题 如何使用: 在Adapter里加载图片时 代码如下:ImageLoader.getInstance.loadImage(...
线程解释,线程状态是什么以及如何分析线程转储。 - 通过分步指南及其背后的原因解决真正复杂的问题。 Maven - Maven 配置文件 调试 - 类加载器、JVM 字节码内部结构 缓存 - JCache API Refcard 和通用术语解释 字节...
Handler+ExecutorService(线程池)+MessageQueue+缓存模式 45 25、Bitmap操作 49 获得输入流 49 将输入流转化为Bitmap流 49 给ImageView对象赋值 49 获取SD卡上的文件存储路径 50 将图片保存到SD卡上 50 26、TextView...
ForkJoinPool初略分析 多线程 ForkJoinPool 补充:为什么不适合执行有block比如有io的任务 线程block的时候,线程池会调度线程池队列中的其他未线程运行,这是ExecutorService的机制; 但是ForkJoinPool中的...
常规Java工具,算法,加密,数据库,面试题,源代码分析,解决方案: Alibaba_Druid AngularJS_String_SubString Big_Data_ETL C# CROS CrossOrigin_Request Eclipse_Referenced_File_Contains_Errors Git_Language_...
7.2.2 关闭ExecutorService127 7.2.3 “毒丸”对象128 7.2.4 示例:只执行一次的服务129 7.2.5 shutdownNow的局限性130 7.3 处理非正常的线程终止132 7.4 JVM关闭135 7.4.1 关闭钩子135 7.4.2 守护线程136 ...
可达性分析............................................................................................................................................... 26 2.3.2. 2.3.3. 老年代 ........................
可达性分析............................................................................................................................................... 26 2.3.2. 2.3.3. 老年代 ........................