concurrent
Blocking Queue example of limited connection pool
private BlockingQueue<Connection> pool = new ArrayBlockingQueue<Connection>(10);
private AtomicInteger connCount = new AtomicInteger();
public Connection getConnection() {
Connection conn = pool.poll(5, TimeUnit.SECONDS);
if (conn == null) {
synchronized (connCount) {
if (connCount.get() < 10) {
conn = getNewConnection();
pool.offer(conn);
connCount.incrementAndGet();
}
}
if (conn == null) {
throw new ConnUnavailException();
} else {
return conn;
}
}
}
Related Article:
Reference: Java Concurrency Part 5 – Blocking Queues from our JCG partners at the Carfey Software blog

