Java教程

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

本文主要是介绍关于在项目中创建一个新的线程之后需要将线程持有的数据库连接对象归还的思考,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

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

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

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

这篇关于关于在项目中创建一个新的线程之后需要将线程持有的数据库连接对象归还的思考的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!