ThreadPool 线程池介绍

  学习线程池的知识需要掌握线程池的基本概念,线程池的适用场景,线程池的体系结构
一:线程池的基本概念
了解线程池的基本概念,我们需要了解下面的几个知识点
1  线程池是什么?
2: 线程池的作用?
3: 线程池解决了什么问题?
4:线程池的框架:线程池有哪些组成的.
什么是线程池
线程池是存放一组线程的队列,我们通过这线程队列来执行一系列的任务。
我们如果要用到线程池,只需把任务添加到线程池中,线程池会自动创建线程来执行任务。所以使用线程池不需要自己创建线程,而是通过线程池来创建和执行和管理线程.( 这个描述涉及到几个问题:怎么创建线程,怎么执行任务,如何设计一个线程池,需要考虑到哪些情况,这在以后的学习中都需要解答的)
线程池的技术背景:
线程池的技术解决了什么问题。
因为在开发中,创建和销毁对象是很费时间的,所以提高服务器程序效率的一个手段就是尽量的减少创建和销毁对象的次数,比如我们经常用到的连接池的技术就是这个道理,所以线程池的目的也是如此,因为创建线程和销毁线程是比较费资源的,假设在开发中需要频繁的创建线程和销毁线程的话,那么会非常的占用资源,通过预先建立一个线程池可以解决这个问题。( 具体如何实现呢?
线程池的好处
可以解决处理器单元内多个线程执行的问题。它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。
线程池的适用场景:
线程池技术如何提高服务器的性能。
假设一个服务器一天要处理50000个请求,并且每个请求需要一个单独的线程完成。我们比较利用线程池技术和不利于线程池技术的服务器处理这些请求时所产 生的线程总数。在线程池中,线程数一般是固定的,所以产生线程总数不会超过线程池中线程的数目或者上限(以下简称线程池尺寸),而如果服务器不利用线程池 来处理这些请求则线程总数为50000。
  1. 需要大量的线程来完成任务,且完成任务的时间比较短。 WEB服务器完成网页请求这样的任务,使用线程池技术是非常合适的。因为单个任务小,而任务数量巨大,你可以想象一个热门网站的点击次数。 但对于长时间的任务,比如一个Telnet连接请求,线程池的优点就不明显了。因为Telnet会话时间比线程的创建时间大多了。
  2. 对性能要求苛刻的应用,比如要求服务器迅速相应客户请求。
  3. 接受突发性的大量请求,但不至于使服务器因此产生大量线程的应用。突发性大量客户请求,在没有线程池情况下,将产生大量线程,虽然理论上大部分操作系统线程数目最大值不是问题,短时间内产生大量线程可能使内存到达极限,并出现"OutOfMemory"的错误。
 线程池的组成部分
一般线程池的内部结构:
线程池管理器:来调度这些线程
工作线程: 正在工作的线程
请求接口:创建请求对象,让工作线程调度任务的执行.
请求队列:用于存放请求的任务,工作线程从请求队列读取任务.
结果队列:用于存储执行后返回的结果.
总结:
这篇文章介绍了线程池是什么,产生的技术背景,组成部分,以及线程池的意义,线程池的应用场景?
那么如果我们要自己设计一个线程池,应该如何设计呢?需要考虑哪些问题呢?
引用资料:

猜你喜欢

转载自nergpchen.iteye.com/blog/2253662