The difference is that we don't need to synchronize access to `obtainConnection` if `singleUse="true"`.

(Because `theConnection` is null in that case so we always get a new connection).

In the case of a shared connection (`singleUse="false"`), we can't have two concurrent threads creating the connection.