做过一个基于线程池的http服务器,面试时老师经常会问到线程池跟多线程有什么好处,所以在这里总结一下:
当浏览器传送一个请求到达服务器后,如果是多线程,服务端会临时性的创建一个新的进程,来处理相应的客户端的请求,当一个线程处理完相应的客户端任务后,线程也就结束了自己的生命周期,不能再一次被启用。另外在java中,如果每当一个请求到达就会创建一个新的进程,开销是很大的。
在实际应用中,系统在创建和销毁线程所花的时间,有时候甚至比处理这个请求所花的时间更多,不光是创建和销毁,线程活动所花费的时间也是很多的。在jvm里创建太多的线程,则可能会使系统过渡消耗而系统出现资源不足的情况。
为了防止资源不足的情况,服务器程序应该想办法来限制给定时间内处理任务的数量,从而来减少线程创建和销毁的数目,尤其是那些比较大的对象,尽可能利用已有的对象进行服务。
线程池技术主要来解决系统资源不足的情况。首先,重用一个线程可以将线程的创建和开销都分摊给多个任务。其次,由于线程已经存在,可以消除线程创建带来的延迟,这样系统就可以立即为请求服务。另外通过调整线程池中线程的数量,可以防止出现资源不足的情况。
分享到:
相关推荐
使用线程池管理多线程上传,包含了文件拆分,文件分片多线程上传,单文件上传。多线程执行任务等待管理。拒绝直接new Thread创建新线程导致的诸多问题
线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj 线程池的多线程并发控制技术研究.caj
使用qt线程池实现多线程http请求,支持限速下载,可以设置全部下载的网络上限,和单个线程的网络上限。可以实时显示当前下载速度。
保证线程安全的Qt线程池使用,线程任务可以和其他线程通信,使用场景:频繁操作的I/O操作或是耗时操作。
创建多线程操作是非常昂贵的,如果每个运行时间非常短的操作,都创建多线程进行操作,可能并不能提高效率,反而降低... 如果你有非常多的执行时间非常短的操作,那么适合作用线程池来提高效率,而不是自行创建多线程。
Delphi线程池实现多线程FTP分段下载组件 by :renshouren mail:114032666@qq.com QQ:114032666 2019.10.05 使用的组件 1、TIdFTP Indy FTP客户端 2、TThreadsPool 线程池 工作原理及流程 调用本单元,将自动在程序...
源码演示了多线程写法,主要是对比精易模块线程池,鱼刺模块线程池。@在人间。
VC线程池的一个非常不错的例子,同时也是一个多线程的实例。
C#线程池 所有线程运行完毕,只是测试代码,用来弄清楚,打印信息很明确,适合初学者
java多线程,对多线程,线程池进行封装,方便使用
多线程控制 线程池模式 HTTP线程 用户点击数量控制在一个线程池模式下
java简单分布式架构,多个数据源,线程池创建多线程访问数据库表,提高效率
线程池(多线程)+异步+委托(lamdba)+UI跨线程(界面实时响应)+递归(树形实时更新)+TCPIP扫描,综合起来的一个实例,对于初学者有很大的帮助
* 使用多线程的好处: 1.降低消耗,减少了创建和销毁线程的次数,每个线程都可以重复利用,可执行多个任务 2.提高响应速度,任务可以不需要等到线程创建就可以立即执行 3.提高线程的可管理性,根据系统的承受能力,...
介绍一个通用多线程服务模块。是利用jdk线程池,多线程并行处理多任务,以提高执行效率。
c#多线程以及线程池的学习 c#多线程以及线程池的学习 c#多线程以及线程池的学习
Java多线程编程,生命游戏,用线程池.zipJava多线程编程,生命游戏,用线程池.zip Java多线程编程,生命游戏,用线程池.zipJava多线程编程,生命游戏,用线程池.zip Java多线程编程,生命游戏,用线程池.zipJava多...
易语言简易线程池的实现。...线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级
线程池和多线程并发库pthread,在windows系统下编译;包括源码和编译结果。 资源包括如下: 1、pthread源码(可自行编译各个版本) 2、编译好的vs2019x64版本 3、示例程序