Executor接口介绍

9 篇文章 0 订阅
2 篇文章 0 订阅

在开发服务器端软件项目时,软件经常需要处理执行时间很短而数目却非常巨大的请求,如果为每一个请求创建一个新的线程,会导致性能上的瓶颈,因为线程对象的创建和销毁需要JVM频繁地进行处理,如果请求的执行时间很短,可能花在创建和销毁线程对象上的时间大于正真执行任务的时间,若这样,则系统性能大幅降低。

在JDK5中提供了线程池的支持,主要的作用就是支持高并发的访问处理,并且可以将线程对象进行复用。核心原理及创建一个运行效率比较优异的“线程池ThreadPool”,在池中支持线程对象管理。包括创建与销毁,使用池时只需要执行具体的任务即可,线程对象的处理都被封装在池中。


Executor接口介绍
在介绍线程池之前,先要了解一下接口java.util.concurrent.Executor,与线程池有关的大部分类都是实现此接口的,该接口声明如下图1所示,
此接口的结构非常简洁,仅有一个方法,如下图2所示。
1 图2

但Executor是接口,并不能直接使用,所以还得需要实现类,图3中所示的内容就是完整Executor接口相关的类继承结构。
3
这幅图相当重要,它概括了从Executor祖先接口到实现类的全部实现与继承过程,学习线程池技术时此结构图要反复查看的。
这里另附上包java.util.concurrent的分层结构图4:
图4
接口ExecutorService是Executor的子接口,在内部添加了比较多的方法,如下图5所示:
5


虽然接口ExecutorService添加了若干个方法的定义,但还是不能实例化,那么就要看一下他的唯一子实现类AbstractExecutorService的名称来看,它是Abstract抽象的,查看源代码如下,也的确是抽象类:
public abstract class AbstractExecutorService implements ExecutorService
所以类AbstractExecutorService同样也是不能实例化的。


在来看一下AbstractExecutorService类的子类ThreadPoolExecutor的源代码如下:
public class ThreadPoolExecutor extends AbstractExecutorService {
通过查看源代码发现,类ThreadPoolExecutor并不是抽象的,所以可以进行实例化,进而使用ThreadPoolExecutor类中的方法所提供的功能。

类ThreadPoolExecutor的方法列表如下图6所示。
图6
图6所提供的信息是ThreadPoolExecutor类中的方法列表,并未显示从父类继承而又没有重写的方法,为了查看ThreadPoolExecutor对象能调用的全部方法列表,声明一个变量,
然后通过IDE提供的自动完成的功能,就是使用对象的方式查看一下全部能调用的方法列表。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值