c3p0 APPARENT DEADLOCK问题

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)  




下载c3p0-0.2.9.1.zip文件。里面包含3个jar文件。

倒入项目并buildpath;

然后参看配置:application.xml

<bean id="parentDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass" value="${jdbc.driverClassName}" />
		<property name="user" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}" />
		<!-- 连接池信息 -->  
        <!-- 当连接池中的连接用完时,C3P0一次性创建新连接的数目 -->  
        <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />  
        <!-- 初始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值。默认为3; -->  
        <property name="initialPoolSize" value="${c3p0.initialPoolSize}" />  
        <!-- 最大空闲时间,超过空闲时间的连接将被丢弃。为0或负数则永不丢弃。默认为0; -->  
        <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />  
        <!-- 连接池中保留的最小连接数。默认为15 -->  
        <property name="minPoolSize" value="${c3p0.minPoolSize}" />  
        <!-- 连接池中保留的最大连接数。默认为15; -->  
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />  
        <!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatement数量。但由于预缓存的Statement属 于单个Connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素,如果maxStatements与 maxStatementsPerConnection均为0,则缓存被关闭。默认为0;  -->  
        <property name="maxStatements" value="${c3p0.maxStatements}" />  
        <!-- 连接池内单个连接所拥有的最大缓存Statement数。默认为0;  -->  
        <property name="maxStatementsPerConnection" value="${c3p0.maxStatementsPerConnection}"/>

jdbc.properties

c3p0.acquireIncrement=50  
c3p0.initialPoolSize=100  
c3p0.maxIdleTime=50  
c3p0.minPoolSize=50  
c3p0.maxPoolSize=1000  
c3p0.maxStatements=0  
c3p0.maxStatementsPerConnection=5 

然后就可以了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值