java 数据库线程池_2019年Java面试试题之线程池与连接池详解

a4c26d1e5885305701be709a3d33442f.png

前言

学习Java的小伙伴们去面试的时候经常会遇到笔试环节中的线程池与连接池的区别,掌握好的话当然没什么问题,但是有的小伙伴们估计会懵逼,在这里本文就这两个做了一个比较详细的介绍。

正文

一、线程池之原理线程池,究竟是怎么一回事呢?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念。

先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。

也许有人质疑:为什么要搞得这么麻烦,如果每当客户端有新的请求时,我就创建一个新的线程不就完了吗?这也许是个不错的方法,因为它能使你的代码相对容易一些,但是却忽略了性能问题。

假如有一个省级数据大集中的银行网络中心,高峰期每秒的客户端请求并发数超过100,如果为每个客户端请求创建一个新线程的话,那耗费的CPU时间和内存将是惊人的,如果采用一个拥有200个线程的线程池,那将会节约大量的系统资源,使得更多的CPU时间和内存用来处理实际的商业应用,而不是频繁的线程创建与销毁。

二、连接池之原理

数据库连接是一种关键的有限的昂贵的资源,这一点多用户的网页应用程序中体现的尤为突出。

一个数据库连接池对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库连接对象),由应用程序动态的对池中的连接进行申请,使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。

连接池技术尽可能多的重用了消耗内存的资源,大大节省了内存,提高了服务器的服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来检视数据库连接的数量、使用情况等。

1.最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费。

2.最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

结尾

通过本文的描述各位小伙们对于Java开发中的线程池与连接池有了一个大概的了解了,继续努力吧骚年!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值