1.线程池
线程池是类似于操作系统中缓冲区的概念
先启动若干数量的线程并使其进入睡眠状态,当客户端发送一个请求时,线程池中就会唤醒一个线程进行处理 ,处理结束后该线程又会再次进入休眠状态。
线程池有什么用
当处理小规模应用时,为每一个请求单独创建一个线程是很方便的,因为并发量并不大。
当处理大规模应用时,为每一个请求单独创建一个线程将会变得非常耗费CPU内存和时间,甚至会带来难以预料的后果,这时使用线程池就能有效地解决此类问题,保证每个请求都能够有一个线程来处理的同时也能保证CPU的高性能。
2.DB连接池(数据库连接池)
DB连接池就是保存了很多数据库连接对象的对象池。
和上文一样,如果对应一个物理数据库都用一个数据库连接对象进行连接,每次操作都打开一个物理连接,使用后再关闭连接,这样会使系统性能十分低下。
在应用程序启动时建立若干的数据库连接,并将这些连接组成一个连接池,由应用程序动态的对池中的连接进行申请使用和释放。
如果并发请求超过了连接池中的连接数,那么就会再请求队列中进行排队等待,并且应用程序可以通过当前状况动态改变连接数。
目的
尽可能的重复利用了消耗内存的资源,节省了大量内存,同时也提高了服务效率和程序运行效率,同时能够根据自身管理机制来监视数据库连接的数量等。
最小连接数:连接池保持的最小连接数
最大连接数:连接池中能申请的最大连接数
空闲连接
长时间连接时,有一个最大连接时间,超过该时间后就会对资源进行回收。
有无连接池对比
数据库连接池小结
负责分配、管理和释放数据库连接
允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
释放超过最大空闲时间的数据库连接,避免数据库连接遗漏
明显提高了对数据库操作的性能