前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中线程池的几种实现方式

java中线程池的几种实现方式

作者头像
海仔
发布2019-08-06 11:04:11
8560
发布2019-08-06 11:04:11
举报
文章被收录于专栏:海仔技术驿站海仔技术驿站

1 : 线程池简介 :

多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.

假设一个服务器完成一项任务所需时间为 : T1创建线程时间,T2 在线程中执行任务的时间, T3销毁线程时间.

如果 : T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能.

一个线程池包括以下四个基本组成部分 :

1 : 线程池管理器(ThreadPool) : 用于创建并管理线程池,包括创建线程池,销毁线程池,添加新任务;

2 : 工作线程( PoolWorder ) : 线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;

3 : 任务接口( Task) : 每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;

4 : 任务队列(taskQueue) : 用于存放没有处理的任务.提供一种缓存机制.

线程池技术正是关注如何缩短或调整T1,T3时间的技术,从而提高服务器程序性能的.它把T1,T3分别安排在服务器程序的启动和结束的时间段或者一些空闲的时间段,这样在服务器程序处理客户请求下,不会有T1,T3的开销了.

线程池不仅调整T1,T3产生的时间段,而且它还显著减少了创建线程的数目,看一个例子:

假设一个服务器一天要处理50000个请求,并且每个请求需要一个单独的线程完成.在线程池中,线程数一般是固定的,所以产生线程总数不会超过线程池中的线程数目,而如果服务器不利用线程池来处理这些请求则线程总数为50000.一般线程池大小是远小于50000.所以利用线程池的服务器程序不会为了创建50000而在处理请求时浪费时间,从而提高效率.代码实现中并没有实现任务接口,而是把Runnable对象加入到线程池管理器(ThreadPool),然后剩下的事情就由线程池管理器(ThreadPool)来完成了.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年11月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档