Наличие постоянных соединений не означает, что все потоки используют одно и то же соединение. Он просто «говорит», что вы держите соединение открытым (в отличие от того, чтобы открывать соединение каждый раз, когда оно вам нужно). Открытие соединения является дорогостоящей операцией, поэтому, как правило, старайтесь избегать открытия соединений чаще, чем необходимо.
По этой причине многопоточные приложения часто используют пулы соединений. Пул заботится об открытии и закрытии соединений, и каждый поток, которому требуется соединение, запрашивает один из пула. Важно позаботиться о том, чтобы поток как можно скорее вернул соединение в пул, чтобы другой поток мог его использовать.
Если в вашем приложении есть только несколько длительных потоков, которым требуются соединения, вы также можете открыть соединение для каждого потока и оставить его открытым.
Использование только одного соединения (как вы его описали) равно пулу соединений с максимальным размером. Это рано или поздно станет вашим узким местом, поскольку всем потокам придется ждать соединения. Это может быть опция для сериализации операций с базой данных (выполнять их в определенном порядке), хотя есть и лучшие варианты для обеспечения сериализации.