Java 线程池的作用

转载 2015年11月17日 22:17:23

1.为什么要使用线程池
     在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有对象来进行服务,这就是“池化资源”技术产生的原因。
     线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重复使用线程,线程创建的开销就被分摊到了多个任务上了,而且由于在请求到达时线程已经存在,所以消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使用应用程序响应更快。另外,通过适当的调整线程中的线程数目可以防止出现资源不足的情况。
2.线程池的组成部分
    一个比较简单的线程池至少应包含线程池管理器、工作线程、任务列队、任务接口等部分。其中线程池管理器的作用是创建、销毁并管理线程池,将工作线程放入线程池中;工作线程是一个可以循环执行任务的线程,在没有任务是进行等待;任务列队的作用是提供一种缓冲机制,将没有处理的任务放在任务列队中;任务接口是每个任务必须实现的接口,主要用来规定任务的入口、任务执行完后的收尾工作、任务的执行状态等,工作线程通过该接口调度任务的执行。
      线程池管理器至少有下列功能:创建线程池,销毁线程池,添加新任务。
      工作线程是一个可以循环执行任务的线程,在没有任务时将等待。
      任务接口是为所有任务提供统一的接口,以便工作线程处理。任务接口主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等。
3.线程池适合应用的场合
      当一个服务器接受到大量短小线程的请求时,使用线程池技术是非常合适的,它可以大大减少线程的创建和销毁次数,提高服务器的工作效率。但是线程要求的运动时间比较长,即线程的运行时间比

Java 线程池的使用好处

使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存 以下是Java自带的几种线程池: 1、newFixe...
  • u011467537
  • u011467537
  • 2015年10月10日 22:40
  • 6917

Java 线程组和线程池区别

线程组: 线程组存在的意义,首要原因是安全。 java默认创建的线程都是属于系统线程组,而同一个线程组的线程是可以相互修改对方的数据的。 但如果在不同的线程组中,那么就不能“跨线程组”修改数据,可以从...
  • QQ578473688
  • QQ578473688
  • 2017年01月15日 14:45
  • 10511

java线程池的种类和应用

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 new...
  • paul342
  • paul342
  • 2016年09月05日 19:36
  • 2281

深入理解Java线程池

本文要解决的问题; 线程池一般都是面试过程中常问的问题,本文总结一下线程池的一些基本内容。 线程池的适用场景: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁...
  • sbq63683210
  • sbq63683210
  • 2016年08月19日 16:45
  • 719

Java线程池理解

线程池原理理解作用: 线程池的作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果; 少了浪费系统资源,多了造成系统拥挤效率不高。 用...
  • ymrfzr
  • ymrfzr
  • 2016年05月23日 10:34
  • 4230

java 线程池面试题

Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运...
  • ht99582
  • ht99582
  • 2014年02月20日 19:14
  • 5370

Java并发编程之线程池的理解与使用

首先说说线程池的作用:一言以蔽之,就是提高系统效率。如果服务器对每个请求都分别创建一个线程的话,在很短时间内就会产生很多创建和销毁的动作,然而服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大...
  • sky_100
  • sky_100
  • 2017年04月08日 11:01
  • 9116

java jdbc线程池的使用

好久没直接使用jdbc了,今天重温了一下相关知识,并对连接池的使用写了简单的示例,记录在此以便需要的同行参考和方便自己查阅,不足之处欢迎批评指正。 1、dbcp数据源 所需jar包 dbcp:连接池的...
  • HappySorry
  • HappySorry
  • 2016年03月22日 23:51
  • 3557

关于 Tomcat 的线程池的理解

默认配置下,Tomcat 会为每个连接器创建一个绑定的线程池(最大线程数 200)。在大多数情况下你不需要改这个配置(除非增大最大线程数以满足高负载需要)。但是 Tomcat 喜欢在每个工作者线程的 ...
  • defonds
  • defonds
  • 2015年02月11日 16:33
  • 4794

单例模式创建线程池和使用

今天记录下线程池的创建和使用。因为在一个程序中往往都只会使用一个线程池,所以为了代码更加的完善,我们可以使用单例模式来创建线程池,单例模式是一种设计模式,特点是它私有化了构造方法,内部创建了一个需要返...
  • zhou_shaowei
  • zhou_shaowei
  • 2017年01月15日 15:14
  • 2565
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 线程池的作用
举报原因:
原因补充:

(最多只允许输入30个字)