2011-05-09 16:27:30,688 [Timer-0] WARN  [com.mchange.v2.async.ThreadPoolAsynchronousRunner] - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1ba59dc -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
2011-05-09 16:27:30,689 [Timer-0] WARN  [com.mchange.v2.async.ThreadPoolAsynchronousRunner] - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1ba59dc -- APPARENT DEADLOCK!!! Complete Status: 
        Managed Threads: 3
        Active Threads: 3
        Active Tasks: 
                com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1125350 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
                com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1be642 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
                com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1aa2231 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
        Pending Tasks: 
                com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask@aafa4a
Pool thread stack traces:
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
                java.net.SocketInputStream.socketRead0(Native Method)
                java.net.SocketInputStream.read(SocketInputStream.java:129)
                oracle.net.ns.Packet.receive(Unknown Source)
                oracle.net.ns.NSProtocol.connect(Unknown Source)
                oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:844)
                oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:268)
                oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
                oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
                oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
                oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
                com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
                com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
                com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
                com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
                com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
                com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
                com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
                java.net.SocketInputStream.socketRead0(Native Method)
                java.net.SocketInputStream.read(SocketInputStream.java:129)
                oracle.net.ns.Packet.receive(Unknown Source)
                oracle.net.ns.NSProtocol.connect(Unknown Source)
                oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:844)
                oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:268)
                oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
                oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
                oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
                oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
                com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
                com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
                com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
                com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
                com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
                com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
                com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
        Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
                java.net.SocketInputStream.socketRead0(Native Method)
                java.net.SocketInputStream.read(SocketInputStream.java:129)
                oracle.net.ns.Packet.receive(Unknown Source)
                oracle.net.ns.NSProtocol.connect(Unknown Source)
                oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:844)
                oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:268)
                oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
                oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
                oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
                oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
                com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
                com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
                com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
                com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
                com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
                com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
                com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
                com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

解决方案 »

  1.   

    代码如下:
    import java.beans.PropertyVetoException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import com.fivesky.smsorder.common.Config;
    import com.mchange.v2.c3p0.ComboPooledDataSource;/**
     * 数据库连接池
     * @author liuqf
     *
     */
    public class DBPool {
        private static DBPool dbPool;
        private ComboPooledDataSource dataSource;
        
        final static private String url = Config.DBURL;
        final static private String username = Config.DBUSER;
        final static private String password = Config.DBPWD;
        final static private String driver = Config.DBDRIVER;    static {
            dbPool = new DBPool();
        }
        
            public DBPool() {
            try {
                dataSource = new ComboPooledDataSource();
                dataSource.setUser(username);
                dataSource.setPassword(password);
                dataSource.setJdbcUrl(url);
                dataSource.setDriverClass(driver);
                dataSource.setInitialPoolSize(5);
                dataSource.setMinPoolSize(1);
                dataSource.setMaxPoolSize(30);
                dataSource.setMaxStatements(0);
                dataSource.setMaxIdleTime(60);
            } catch (PropertyVetoException e) {
                throw new RuntimeException(e);
            }
        }    public final static DBPool getInstance() {        return dbPool;
        }    public void close() {
            dataSource.close();
        }    public final Connection getConnection() {
            try {
                return dataSource.getConnection();
            } catch (SQLException e) {
                throw new RuntimeException("oracle funtimeException", e);
            }
        }    public static void main(String[] args) throws SQLException {
            Connection conn = null;
            try {
                conn = DBPool.getInstance().getConnection();
                System.out.println("conn******* " + conn);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (conn != null) {
                 conn.close();
                }
            }
        }}