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

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

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

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

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

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

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

  • 相关阅读:
    第一篇unity
    C#相关知识小结
    必须知道的八大种排序算法【java实现】
    JAVA八大排序算法
    二进制、八进制、十进制、十六进制之间的转换
    八大排序算法
    JSONArray数据转换成java List
    使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题
    一探前端开发中的JS调试技巧
    SpringMVC注解说明
  • 原文地址:https://www.cnblogs.com/skyvalley/p/15521310.html
Copyright © 2011-2022 走看看