thread pooling

这篇博文介绍:线程池在一般技术中的应用。

在正文开始之前,先解释什么是线程,和容易和它混淆的进程。

进程:执行的程序,是程序的一次执行活动。把多个程序装进内存,在操作系统的调度下,实现进程的并发,可以提高cpu利用率。比较直观的来看,打开计算机任务管理器进程选项下,都是打开的进程,比如qq、浏览器。进程的执行需要给它分配资源,比如CPU、内存、磁盘、显卡等。

然而进程的切换需要大量的资源切换,消耗系统资源,所以出现了线程的概念,因为线程是资源共享的,切换代价小。

线程:一个进程内可以有很多线程,这些线程共享进程分配的资源。举个例子:我们使用word,实际上就打开了多个线程。这些线程一个负责显示,一个接受键盘的输入,一个进行存盘等等。这些线程一起运行,让我们感觉到我们输入和屏幕显示同时发生,而不是输入一些字符,过一段时间才能看到显示出来。

线程池:多线程异步可以提高cpu的利用率,如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。可以通过线程池使线程复用,线程执行完一个任务后,不销毁继续去执行下一个任务。

线程池模型:

LF线程池模型:线程池内线程数量固定,线程间不区分优先级,由领导者(leader)线程负责线程池请求亊件监听和消息分离,
并从跟随者(follower)中选新的领导者线程,然后自己以执行线程(processor)的身份去处理相关亊件,直到本次请求处理
完毕后恢复为 follower 线程并等待重新被选为 leader 线程。

这种模型,因为线程数量固定,用户请求少时,因为维护过多空闲线程,有较大的系统消耗;用户请求量大时,请求积压失效。没有优先级,有些实时任务不能保证实时性。

HH线性池模型:在LF基础上,对线程数量,优先级,调度策略上改进。

数量上:线程池的线程数量是动态的,初始化线程池是预先设定的大小,再根据实际需求动态增减临时线程的数量

优先级:支持线程优先级的动态设定,通过等待处理的任务优先级动态指定处理线程的优先级,支持实时任务。

 

应用:

1.线程池在网络服务器中的应用。

 服务器程序一般都利用线程技术来响应客户请求,目前的网络服务器大多为 C/S 架构,其线程响应客户端要么短且频繁,要么长而连续,这两种服务请求均要求服务器根据系统负载提供稳定的响应时间,并在高并发情况下保证服务器系统的工作稳定性。多线程技术可以通过并发服务器提高性能,但是线程频繁的创建与销毁会导致巨大的系统开销。使用线程池技术可以线程复用处理客户请求,有效地降低了因频繁创建线程而导致的系统开销。

原理:线程池包含几个重要的参数,工作线程,线程容量 与缓存客户端请求的请求队列。线程池的工作原理如图 1 所示。请求队列用于缓存客户端请求,线程用于执行客户端的每一次请求,工作线程从请求队列取出请求,用可重用线程处理请求的任务,并在任务完成后向客户端返回信息。

其中线程池容量是一个很重要的参数,线程池的容量单方面决定服务器的吞吐量性能参数,如果容量过小且并发请求数量超过该容量,请求将会加入阻塞队列,若队列中已包含大量的已缓存请求,则对系统的响应时间影响巨大。同时若线程池容量过大,线程的上下文切换也会造成巨大的系统开销。服务器性能以该服务器的响应时间、吞吐量与CPU 利用率来衡量。系统可利用的资源包括 CPU 核心数目与内存等。处理器执行周期衡量了处理器的处理速度,同时也是线程池管理的主要资源,JDK 从 1.5 开始提供了 ThreadPoolExecutor 类管理线程池,该类提供了一系列接口配置与实时定制线程池容量,其可配置参数为 CorePoolSize(核心大小)、MaximumPoolSize(最大值)与 KeepAliveTime(线程存活时间) 。其中核心线程池尺寸可以通过设置这三个参数来达到线程池最优性能。

2.在移动通信数据传输系统中的应用:

在移动数据通信中,信息平台到用户的信息下发需求飞速发展,海量的数据信息需要一种更灵活、高效的系统架构保证各类渠道信息的快速下发。使用线程池技术处理队列中等待的海量数据进行分析处置,面对不同数量的请求任务,若请求任务过多或过少、线程空闲过多或负荷过重,则任务请求和线程处理能力出现不协调状况。这就需要根据上述启发式规则信息动态改变池规模,使系统达到最佳性能。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值