Posiadanie trwałych połączeń nie oznacza, że wszystkie wątki używają tego samego połączenia. Po prostu „mówi”, że utrzymujesz otwarte połączenie (w przeciwieństwie do otwierania połączenia za każdym razem, gdy jest potrzebne). Otwarcie połączenia jest kosztowną operacją, więc generalnie starasz się unikać otwierania połączeń częściej niż to konieczne.
To jest powód, dla którego aplikacje wielowątkowe często korzystają z pul połączeń. Pula zajmuje się otwieraniem i zamykaniem połączeń, a każdy wątek, który potrzebuje połączenia, żąda jednego z puli. Ważne jest, aby uważać, aby wątek jak najszybciej zwracał połączenie do puli, aby inny wątek mógł z niego korzystać.
Jeśli Twoja aplikacja ma tylko kilka długo działających wątków, które wymagają połączeń, możesz również otworzyć połączenie dla każdego wątku i pozostawić je otwarte.
Używanie tylko jednego połączenia (tak jak to opisałeś) jest równe puli połączeń o maksymalnym rozmiarze. Prędzej czy później stanie się to twoim wąskim gardłem, ponieważ wszystkie wątki będą musiały poczekać na połączenie. Może to być opcja serializacji operacji bazy danych (wykonywania ich w określonej kolejności), chociaż istnieją lepsze opcje zapewniające serializację.