线程池原理:
-类似于操作系统中的缓冲区的概念
-流程
1. 先启动若干数量的线程,并让这些线程都处于睡眠状态
2.当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求
3.当处理完这个请求后,线程又处于睡眠状态
为何要用线程池:
为每一个请求单独的创建线程是很方便
-比如小规范应用时
并发量很大时,如果为每一个请求都创建新的线程,那么耗费CPU时间和内存是很惊人的,同时反复创建、销毁线程带来的结果将是一场灾难
-高并发
-追求高性能时
DB连接池:
●数据库连接池就是保存了很多数据库连接对象的对象池
-数据库连接是一种关键的有限的昂贵的资源-多用户的网页应用程序中[即JAVAEE企业级]体现得尤为突出
-一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。
数据库连接池解决方案:
-在应用程序启动时建立足够的数据率连接,并将这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据率连接对象)
-由应用程序动态地对池中的连接进行申请、使用和释放。
-对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。
使用DB连接池目的
-尽可能多地重用消耗内存的资源,节省内存
-提高了服务器地服务效率,能够支持更多的客户服
-提高程序通行效率
-同时,可以通过其自身的管理机制来监视数据库连接的教量、使用情况等。
1.最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据率连接资源被浪费
2.最大连接数是连接池能中请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作
具体的连接池:
数据库连接池
-负责分配、管理和释放数据库连接
-允评应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
-释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
-能明显提高对数据库操作的性能