Executor框架

Executor框架是负责java线程的执行的,是一个执行机制。
在上层,java多线程程序会把应用分解为若干个任务,然后由Executor框架把任务映射到线程池里面的线程。
在底层,操作系统的内核负责把这些线程映射到硬件处理器上。
也就是应用程序通过Executor控制线程的调度,而底层的调度是通过操作系统的内核来完成的。

Executor框架的结构

主要包括三大部分:

  1. 任务: 包括执行任务需要实现的接口:包括Runnable接口和callable接口
  2. 任务的执行:包括Executor接口和继承了Executor接口的ExecutorService。有两个关键的类实现了ExecutorService接口:ThreadPoolExecutor,和ScheduledThreadPoolExecutor。
  3. 异步计算的结果:Future接口和实现类FutureTask

Executor框架的成员

主要成员有ThreadPoolExecutor,ScheduledThreadPoolExecutor,Future接口,Rubbable接口,Callable接口和Executors。

ThreadPoolExecutor

ThreadPoolExecutor是Executor最核心的类,它是线程池的实现类,主要有四个部分组成:
corePool:核心线程池的大小
maximumPool:最大线程池的大小
BlockingQueue:保存任务的工作队列
RejectedExecutorHandler:如果ThreadPoolExecutor已经饱和了,就是达到了最大线程池的大小而且工作队列满了,这时候,executor方法就会调用RejectedExecutionHandler。

通过Executors工具类,可以创建三种类型的ThreadPoolExecutor,

  1. FixedTheadPool:可重用的固定线程数的线程池。
    如果当前运行的线程数小于corePoolsize,就创建新的线程执行任务。
    如果当前运行的线程数等于corePoolsize,就把任务添加到任务队列LinkedBlockingQueue。
    如果当前线程池执行完了,就从LinkedBlockingQueue获取任务来执行。

  2. SingleThreadPool:是使用单个工作线程来执行任务,适合一些需要保证任务顺序执行的场景。

  3. CachedThreadPool。是大小无界的线程池,适合负载比较轻的服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值