• 单例模式——数据库连接池设计Java代码实现


    以下是一个简单的Java代码示例,演示了如何使用单例模式来设计一个数据库连接池:
    import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;
    public class DatabaseConnectionPool {
    private static DatabaseConnectionPool instance; private List connectionPool;
    private String dbUrl;
    private String dbUser;
    private String dbPassword;
    private DatabaseConnectionPool() { connectionPool = new ArrayList<>();
    dbUrl = “jdbc:mysql://localhost:3306/mydatabase”; dbUser = “root”;
    dbPassword = “password”;
    init();
    }

    public static synchronized DatabaseConnectionPool getInstance() {
    if (instance == null) {
    instance = new DatabaseConnectionPool();
    }
    return instance;
    }

    public synchronized Connection getConnection() throws SQLException {
    if (connectionPool.isEmpty()) {
    Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
    connectionPool.add(conn);
    return conn;
    } else {
    return connectionPool.remove(0);
    }
    }
    private void init() {
    for (int i = 0; i < 10; i++) {
    try { connectionPool.add(DriverManager.getConnection(dbUrl, dbUser, dbPassword));
    } catch (SQLException e) { e.printStackTrace();
    } } }}

    在这个示例中,使用了单例模式来保证在整个应用程序中只有一个DatabaseConnectionPool实例。
    使用getInstance()方法来获取这个实例。在getInstance()方法中,如果instance为空,则创建一个新的DatabaseConnectionPool实例。
    在getConnection()方法中,从连接池中获取一个连接(如果池为空,则创建一个新连接),并将其返回给调用方。如果池不为空,则从池中获取第一个连接并返回它。
    init()方法用于初始化连接池,其中创建了10个连接并将其添加到连接池中。
    请注意,例子中在getInstance()方法和getConnection()方法中使用了synchronized关键字,以确保线程安全。

  • 相关阅读:
    Spring 随笔 ioc/di 1-源码走读
    OBS架构分析
    9月16日,每日信息差
    点击后给导航添加样式
    R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性...
    统计字符串中不同回文子序列的个数
    03【Spring AOP、CGBLIB代理】
    线路位宽与 CPU 位宽
    【JavaEE初阶 -- 多线程2】
    5. 最长回文子串
  • 原文地址:https://blog.csdn.net/qq_39311377/article/details/133782402