搭建struts+hibernate+spring框架的時候,出現了c3p0連接池報死鎖,當時愣了好久,網上去查了資料,有人說::
解決辦法:
把max_statements設置為0。
c3p0在同時關閉statement和connection的時候,或者關閉他們之間的時間很短的時候,有時候connection並沒有被關閉,因為有些preparedstatement還在被cached住。這是c3p0的作者自己說的。
其實,我的情況不是這樣的,當時我搭建完環境,忘記新建數據庫了,新建數據庫后,我的問題就解決了,我想,如果你也整好在搭建Demo環境,出現這個問題,也不應該是上面的那種情況導致的.
警告: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@200d0c
-- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2013-9-13 16:25:18 com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDet
ector run
警告: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@200d0c
-- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@bdb859
(com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@191f61
c (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1b4b24
d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@260829
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@e1fb6c
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5
,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
sicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5
,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
sicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5
,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(Ba
sicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run
(ThreadPoolAsynchronousRunner.java:547)
