Caro,
- Não é a melhor explicação mas acredito que seja o suficiente para você entender um pouco.
O pool de conexões tem o objetivo de ser uma parte da aplicação responsável pelo gerenciamento de conexões com o banco de dados. Com isso você não precisará criar/fechar conexões sempre que precisar e sim solicitar uma conexão para o pool.
O pool cria as conexões de acordo com a demanda, porém as conexões criadas são “ouvidas” e quando são descartadas são mantidas e disponibilizadas para outras requisições, ou seja, já economizamos dois eventos, de fechar e abrir uma nova conexão.
No pool é definida uma quantidade máxima de conexões e quando todos estão em uso, qualquer solicitação fica na fila de espera, aguardando que uma conexão seja liberada.
Isso é apenas uma resumo pois existem muitas características em pool de conexões que podem ser usadas de acordo com a sua necessidade.
Sobre a implementação, você mesmo poderia criar uma do zero mas acredito que não seja seu interesse mesmo pq no mercado existem bibliotecas prontas para desenvolvimento de um pool.
A Apache tem uma biblioteca chamada DBCP para de pool de conexões que é utilizada no Tomcat.
Outra alternativa é você usar o pool de conexão do próprio servidor de aplicação, assim vc não se preocupa com a implementação e sim apenas com a requisição e liberação da conexão para o servidor.
Consulte a documentação do servidor que vc utiliza.
T+