(In theory)
Basically, these "pool" provide us with the connections as we asked, but "reaprovechan" a request to another. The idea is this: We asked the pool a connection. This look for one that is free and gives it to us, pointing that we have and which is no longer free. We conduct our operation (query, insert, delete, ...) and close the connection. The pool receives this request and NO closing closes the connection, but leaves it open and redials free to ask the next thing.
With this way of working, the pool maintains several open connections that will serve and marking as used as ask. When these connections from outside are closed, the pool are not closed and marked as free, to use.