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();
}
}
}