我有一个单例的connectionpool类当我尝试在我的DBDAO类中调用它时,出现了问题,它创建了2个实例

如何解决我有一个单例的connectionpool类当我尝试在我的DBDAO类中调用它时,出现了问题,它创建了2个实例

我正在编写一个优惠券系统项目,而我的连接池有问题。 我将其设置为单例,并且应该在第一次调用它的实例时创建10个连接并打印10次“正在创建连接#num”。 我的DBDAO类是单例,并且具有该连接池的私有实例。 当我尝试测试我的DBDAO类并调用我的DBDAO实例时,由于某种原因,控制台将打印“正在创建连接#num” 20次。.希望获得帮助!

连接池

package com.app.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.sqlException;
import java.util.Stack;

import com.app.db.DBManager;

public class ConnectionPool {
  private Stack<Connection> connections = new Stack<Connection>();

  private static ConnectionPool instance = null;// = new ConnectionPool();

  private ConnectionPool() {
    for (int i = 1; i <= 10; i++) {
        System.out.println("Creating connection #" + i);
        try {
            Connection conn = DriverManager.getConnection(DBManager.getUrl(),DBManager.getUser(),DBManager.getpass());
            connections.push(conn);
        } catch (sqlException e) {
            System.out.println(e.getMessage());
        }
    }
}

public static ConnectionPool getInstance() {
    if (instance == null) {
        synchronized (ConnectionPool.class) {
            if (instance == null) {
                instance = new ConnectionPool();
            }
        }
    }
    return instance;
}

DBDAO

package com.app.dbdao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.app.beans.Company;
import com.app.dao.CompaniesDAO;
import com.app.utils.ConnectionPool;

public class CompaniesDBDAO implements CompaniesDAO {

private static CompaniesDBDAO instance = null;
private ConnectionPool connectionPool = ConnectionPool.getInstance();

private static final String QUERY_GET_ALL = "SELECT * FROM `jb project`.companies;";
private static final String QUERY_INSERT = "INSERT INTO `jb project`.`companies` (`name`,`email`,`password`) VALUES (?,?,?);";
private static final String QUERY_DELETE = "DELETE FROM `jb project`.`companies` WHERE (`id` = ?);";
private static final String QUERY_UPDATE = "UPDATE `jb project`.`companies` SET `name` = ?,`email` = ?,`password` = ? WHERE (`id` = ?);";
private static final String QUERY_GET_ONE = "SELECT * FROM `jb project`.companies WHERE (`id` = ?);";

private CompaniesDBDAO() {

}

public static CompaniesDBDAO getInstance() {
    if (instance == null) {
        synchronized (CompaniesDBDAO.class) {
            if (instance == null) {
                instance = new CompaniesDBDAO();
            }
        }
    }
    return instance;
}

测试

package com.app.clr.dbdao;

import java.sql.Date;

import com.app.beans.Category;
import com.app.beans.Company;
import com.app.beans.Coupon;
import com.app.beans.Customer;
import com.app.dao.CompaniesDAO;
import com.app.dao.CouponsDAO;
import com.app.dao.CustomersDAO;
import com.app.db.DBManager;
import com.app.dbdao.CompaniesDBDAO;
import com.app.dbdao.CouponsDBDAO;
import com.app.dbdao.CustomersDBDAO;
import com.app.utils.ArtUtil;
import com.app.utils.ConnectionPool;

public class DBDAOTesting {

public static void main(String[] args) {
    DBManager.dropCreateTables();
    System.out.println("Tables were Created!");
    System.out.println("==========================================");
    CompaniesDBDAOTesting();
    CustomersDBDAOTesting();
    CouponsDBDAOTesting();

}

    public static void CompaniesDBDAOTesting() {
    ArtUtil.companiesDBDAOTesting();
    CompaniesDAO cDBDAO = CompaniesDBDAO.getInstance();
    ...}

带有DBManager行的测试控制台

Creating connection #1
Creating connection #2
Creating connection #3
Creating connection #4
Creating connection #5
Creating connection #6
Creating connection #7
Creating connection #8
Creating connection #9
Creating connection #10
Tables were Created!
==========================================
 _____                                   _          __________________  ___  
_____ 
/  __ \                                 (_)         |  _  \ ___ \  _  \/ _ \|  
_  |
| /  \/ ___  _ __ ___  _ __   __ _ _ __  _  ___  ___| | | | |_/ / | | / /_\ \ 
| | |
| |    / _ \| '_ ` _ \| '_ \ / _` | '_ \| |/ _ \/ __| | | | ___ \ | | |  _  | 
| | |
| \__/\ (_) | | | | | | |_) | (_| | | | | |  __/\__ \ |/ /| |_/ / |/ /| | | \ 
\_/ /
 \____/\___/|_| |_| |_| .__/ \__,_|_| |_|_|\___||___/___/ \____/|___/ \_| 
|_/\___/ 
                      | |                                                          
                      |_|                                                          
             _____         _   _                                               
            |_   _|       | | (_)                                              
              | | ___  ___| |_ _ _ __   __ _                                   
              | |/ _ \/ __| __| | '_ \ / _` |                                  
              | |  __/\__ \ |_| | | | | (_| |                                  
              \_/\___||___/\__|_|_| |_|\__,|                                  
                                        __/ |                                  
                                       |___/                   

没有DBManager行的测试控制台

Tables were Created!
==========================================
 _____                                   _          __________________  ___  
_____ 
/  __ \                                 (_)         |  _  \ ___ \  _  \/ _ \|  
_  |
| /  \/ ___  _ __ ___  _ __   __ _ _ __  _  ___  ___| | | | |_/ / | | / /_\ \ 
| | |
| |    / _ \| '_ ` _ \| '_ \ / _` | '_ \| |/ _ \/ __| | | | ___ \ | | |  _  | 
| | |
| \__/\ (_) | | | | | | |_) | (_| | | | | |  __/\__ \ |/ /| |_/ / |/ /| | | \ 
\_/ /
 \____/\___/|_| |_| |_| .__/ \__,|                                  
                                        __/ |                                  
                                       |___/                                   
Creating connection #1
Creating connection #1
Creating connection #2
Creating connection #3
Creating connection #4
Creating connection #5
Creating connection #6
Creating connection #7
Creating connection #8
Creating connection #9
Creating connection #10
Creating connection #2
Creating connection #3
Creating connection #4
Creating connection #5
Creating connection #6
Creating connection #7
Creating connection #8
Creating connection #9
Creating connection #10

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?