无风无影

   ::  :: 新随笔  ::  ::  :: 管理

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获取任务,并执行

 

posted on 2016-02-17 11:25  NWNS-无风无影  阅读(416)  评论(0)    收藏  举报