C3P0数据库连接池死锁问题

死锁的产生原理是:存在线程同时占有两个以上的连接对象的情况。 

比如某连接池中有2个连接对象。 
有两个线程分别占用了一个,又分别来申请另一个。这时由于连接池空,而两个线程本身都卡在连接池上,不可能释放原来占有的连接对象,这时产生死锁。 

连接池死锁,会导致软件和数据库相关的部份无响应。比如登陆功能,会用数据库做用户校验,发生连接池死锁后,登陆功能会无法使用(点登陆按钮后,长时间无相应)。

策略:

1.我的做法是一个线程只获取一个连接对象,连接对象上开启事务,然后执行一系列CRUD操作,在这些CRUD操作中不可以再申请新的连接对象,也不可以开启新事务。当这一系列操作执行成功后,提交事务并把连接对象放回池中。

2.数据库链接设置超时,超时自动释放

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值