Java并发(Executor框架)
Java的线程既是工作单元,也是执行机制。从jdk1.5把这两种机制分离开来,callable和runnable是工作单元,而执行机制由Executor框架来实现。
executor主要负责上层,即任务的接收和分解(线程),而下层由硬件CPU实现。

Executor框架主要由三部分组成:
1、任务:包括被执行的任务需要实现的接口:runnable和callable
2、任务的执行:包括Executor接口和实现Executor接口的ExecutorService接口。而Executor有两个关键类实现了ExecutorService接口,它们是:ThreadPoolExecutor类和ScheduledThreadPoolExecuctor类
3、异步计算的结果:包括接口Future和实现接口的FutureTask类
Executor框架使用示意图如下:

ThreadPoolExecutor:通常由Executors工具类来创建,可以创建三种,SingleThreadExecutor(适用于需要保证任务按顺序执行的服务器,并且在任意时间点不会有多线程场景,使用linkedBockingQueue作为工作队列),FixedThreadExecutor(适用于负载比较重的服务器,使用linkedBockingQueue作为工作队列)和CachedThreadExecutor(是大小无界的线程池,适用于负载较轻,较小的任务,使用synchorousQueue作为工作队列)
ScheduledThreadPoolExecuctor:通常由Executors工具类来创建,可以创建2种,SingleThreadScheduledExecutor(适用于单个线程在后台周期性执行的任务呀)和ThreadScheduledExecutor(适用于多个后台周期性执行的场景)
Runnable和Callable接口,实现这两个接口的类都能够被ExecutorService及其子类执行。不同的区别是Callable可以返回结果。
ScheduledThreadPoolExecutor的实现:
1、向DelayQueue添加一个ScheduledFutureTask的任务
2、线程从DelayQueue获取任务,并执行
浙公网安备 33010602011771号