zoukankan      html  css  js  c++  java
  • 关于在项目中创建一个新的线程之后需要将线程持有的数据库连接对象归还的思考

    从《Java并发编程实战》这本书里了解到数据库连接对象其实不是线程安全的,所以通常设计的时候一个线程是持有一个单独的不共享的数据库连接对象的。

    在项目中,如果是tomcat分发出来用于在服务端执行的线程,线程所持有的数据库连接对象是可以复用的,因为线程是可以复用的

    但是对于新建的线程,比如某个线程在服务端运行时,想要多开几个线程用于复杂计算,那么当这些新开的线程执行完之后,一定要记得将他们持有的数据库连接对象回收,否则会造成数据库连接对象泄露。

    造成泄露的原因就是,新开的线程在执行完之后并没有马上被回收(因为虚拟机的垃圾回收不会很频繁),这就导致了线程在结束任务执行后会一直持有数据库连接对象,那么此时其他线程就无法获取到这些对象,而数据库连接对象是有限的。

    如果是大型项目的复杂业务,且请求量很大的话,就会导致数据库连接对象不够而导致业务无法访问数据库

    最近在看项目框架的时候,看到回收数据库连接对象的那几行代码写的注释也是因为数据库连接对象泄露而打上的补丁,证实了这个说法。

  • 相关阅读:
    JAVA 大数据基本操作
    C++ set 基本操作
    JVM 线上故障排查基本操作
    Git基本常用命令
    Git 入门:概念、原理、使用
    30分钟学会如何使用Shiro
    做个男人,做个成熟的男人,做个有城府的男人
    Nginx的最基本功能以及简单配置
    博客网站
    单点登录原理与简单实现
  • 原文地址:https://www.cnblogs.com/skyvalley/p/15521310.html
Copyright © 2011-2022 走看看