What does 20Threads mean? Remote invocations, http requests.
The connection is back to pool after the complete transaction is committed/rollead back.
So it can be that it takes more.
Also it can be that you have a use-case which use the @RequiresNew annotation for transaction, in this case you might use more than one connection for one request.