💡
原文中文,约1200字,阅读约需3分钟。
📝
内容提要
文章讨论了使用 Alibaba Druid 数据源时应用程序无响应的问题,主要由于线程在等待 `com.alibaba.druid.pool.DruidDataSource.takeLast()` 方法导致死锁。通过配置 `maxWait` 参数可以解决此问题,避免程序无限等待连接。默认情况下,`maxWait` 为 -1,表示无限等待。更新版本中对此进行了修正。
🎯
关键要点
-
应用程序无响应的问题主要是由于线程在等待 com.alibaba.druid.pool.DruidDataSource.takeLast() 方法导致死锁。
-
通过配置 maxWait 参数可以解决此问题,避免程序无限等待连接。
-
默认情况下,maxWait 的值为 -1,表示无限等待。
-
在配置文件中增加对 maxWait 的配置后,程序无响应的情况得以解决。
-
最新版本中对该问题进行了修正,代码已更新。
❓
延伸问答
为什么我的应用程序会无响应?
应用程序无响应主要是因为线程在等待 `com.alibaba.druid.pool.DruidDataSource.takeLast()` 方法导致死锁。
如何解决 Druid 数据库连接池的死锁问题?
通过在配置文件中设置 `maxWait` 参数,可以避免程序无限等待连接,从而解决死锁问题。
maxWait 参数的默认值是什么?
默认情况下,`maxWait` 的值为 -1,表示无限等待。
如何配置 maxWait 参数以避免程序无响应?
在配置文件中增加对 `maxWait` 的配置,设置一个正值即可避免程序无响应。
Druid 数据库连接池的最新版本是否修复了死锁问题?
是的,最新版本中对死锁问题进行了修正,代码已更新。
死锁发生时线程的状态是什么?
死锁发生时,大部分线程的状态为 WAITING,表示它们在等待连接。
➡️