import org.adbcj.Connection; import org.adbcj.DriverManager; public class ConnectionPool { private static final int MAX_POOL_SIZE = 10; private static final String DATABASE_URL = "jdbc:adbcj:postgresql://localhost/test"; private static final String USERNAME = "username"; private static final String PASSWORD = "password"; private static ConnectionPool instance; private Connection[] connections; private int poolSize; private ConnectionPool() throws Exception { connections = new Connection[MAX_POOL_SIZE]; poolSize = 0; for (int i = 0; i < MAX_POOL_SIZE; i++) { Connection connection = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD); connections[i] = connection; poolSize++; } } public static synchronized ConnectionPool getInstance() throws Exception { if (instance == null) { instance = new ConnectionPool(); } return instance; } public synchronized Connection getConnection() { while (poolSize == 0) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } Connection connection = connections[poolSize - 1]; poolSize--; return connection; } public synchronized void releaseConnection(Connection connection) { connections[poolSize] = connection; poolSize++; notify(); } } import org.adbcj.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Application { public static void main(String[] args) { try { ConnectionPool connectionPool = ConnectionPool.getInstance(); Connection connection = connectionPool.getConnection(); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM users"); while (resultSet.next()) { } connectionPool.releaseConnection(connection); } catch (Exception e) { e.printStackTrace(); } } }


上一篇:
下一篇:
切换中文