当前位置: 主页 > JAVA语言

java使用连接池的好处-java使用java jwt token 使用

发布时间:2023-04-13 11:08   浏览次数:次   作者:佚名

接着我们来思考一个问题,一个Java系统难道只会跟数据库建立一个连接吗?

这个肯定是不行的,因为我们要明白一个道理,假设我们用Java开发了一个Web系统,是部署在Tomcat中的,那么Tomcat本身肯定是有多个线程来并发的处理同时接收到的多个请求的,我们看下图。

java使用连接池的好处_java使用java jwt token 使用_线程池 java

这个时候,如果Tomcat中的多个线程并发处理多个请求的时候,都要去抢夺一个连接去访问数据库的话,那效率肯定是很低下的

我们看下面的图

线程池 java_java使用java jwt token 使用_java使用连接池的好处

那么如果Tomcat中的每个线程在每次访问数据库的时候,都基于MySQL驱动去创建一个数据库连接,然后执行SQL语句,然后执行完之后再销毁这个数据库连接,这样行不行呢?

可能Tomcat中上百个线程会并发的频繁创建数据库连接,执行SQL语句,然后频繁的销毁数据库连接。

上述这个过程反复循环执行,大家觉得可行吗?

这也是非常不好的,因为每次建立一个数据库连接都很耗时,好不容易建立好了连接,执行完了SQL语句,你还把数据库连接给销毁了,下一次再重新建立数据库连接,那肯定是效率很低下的!如下图。

线程池 java_java使用连接池的好处_java使用java jwt token 使用

所以一般我们必须要使用一个数据库连接池,也就是说在一个池子里维持多个数据库连接,让多个线程使用里面的不同的数据库连接去执行SQL语句,然后执行完SQL语句之后,不要销毁这个数据库连接,而是把连接放回池子里,后续还可以继续使用。

基于这样的一个数据库连接池的机制java使用连接池的好处,就可以解决多个线程并发的使用多个数据库连接去执行SQL语句的问题,而且还避免了数据库连接使用完之后就销毁的问题,我们看下图的说明。

java使用连接池的好处_线程池 java_java使用java jwt token 使用

常见的数据库连接池有DBCPjava使用连接池的好处,C3P0,Druid,等等,大家如果有兴趣的话,可以去搜索一下数据库连接池的使用例子和代码,甚至探索一下数据库连接池的底层原理,我们就不会拓展了。

其实不光是Java系统,如果你是一个Python、Ruby、.NET、PHP的程序员,这个系统与数据库的交互本质都是一样的,都是基于数据库连接池去与数据库进行交互。