concurrency基础

Runnable 一个执行任务,没有返回值,也不能抛出受检查异常

Callable 一个执行任务有返回值,也能抛出受检查异常

Future 表示执行任务的生命周期,任务的生命周期为:创建,提交,开始,完成。实现类:FutureTask

Executor 只有一个 void execute(Runnable command) 方法,没有对其自身生命周期的方法

ExecutorService 扩展了Executor,并加入了对线程池(ExecutorService本身)生命周期的管理,ExecutorService的生命周期有3种状态:运行,关闭和已终止。其submit方法可以返回执行任务的Future。实现类:ThreadPoolExecutor

CompletionService 融合了Executor和BlockingQueue的功能,使用Executor执行任务,任务执行完成后把该任务的计算结果放到BlockingQueue中,可以调用take或poll方法获取BlockingQueue中的结果

Timer 类执行定时任务时只会创建一个线程,有以下缺点:

1. 当某个TimerTask执行时间较长时(假设超过了几个执行周期),后面的TimerTask有可能快速连续调用几次(由前面超过的几个执行周期决定),或者被抛弃不再调用(取决于固定速率和固定延时)

2. Timer不捕获异常,当某个TimerTask抛出未检查异常时,整个Timer将被取消

另外,Timer支持基于绝对时间而不是相对时间的调度机制,因此对系统时钟比较敏感

ScheduledThreadPoolExecutor 基于相对时间的调度机制,而且是线程池的方式执行,不存在上述缺陷

原文地址:https://www.cnblogs.com/drizzlewithwind/p/6395946.html