搭建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)