Является ли java.sql.Connection streamом безопасным?

Чтобы перефразировать вопрос: следует ли мне избегать совместного использования экземпляров classов, которые реализуют java.sql.Connection между разными streamами?

    Если драйвер JDBC является специфицированным, то технически «да», объект является streamобезопасным, но вам следует избегать совместного использования соединений между streamами, поскольку активность в соединении будет означать, что только один stream сможет делать что угодно одновременно ,

    Вы должны использовать пул соединений (например, Apache Commons DBCP ), чтобы гарантировать, что каждый stream получает свое собственное соединение.

    java.sql.Connection – это интерфейс. Таким образом, все зависит от реализации драйвера, но в целом вам следует избегать совместного использования одного и того же соединения между различными streamами и использования пулов подключений. Также рекомендуется иметь количество соединений в пуле выше числа рабочих streamов.

    Это скорее старый stream, но для тех, кто ищет ответ в отношении Microsoft SQL Server, вот ответ:

    SQLServerConnection не является streamобезопасным, однако несколько операторов, созданных из одного соединения, могут одновременно обрабатываться в параллельных streamах.

    а также

    SQLServerConnection реализует соединение JDBC с SQL Server.

    Из всего вышесказанного вы можете обмениваться операциями, а не соединениями, и если вам нужно подключение в каждом streamе, вы можете использовать пул streamов.

    Подробнее здесь

    Oracle JDBC и многопоточные документы:

    Поскольку все методы API Oracle JDBC синхронизированы, если два streamа пытаются использовать объект соединения одновременно, то каждый будет вынужден ждать, пока другой не закончит его использование.

    Таким образом, это может быть безопасно в случае Oracle, но одновременный доступ будет страдать от узкого места.

    У нас было ArrayOutOfBoundsException в кэше операторов Websphere его pooleddatasource, и нам пришлось отключить этот кеш.

    У нас было лечение, которое блокировало себя.

    Все это из-за текущего доступа к соединению, поэтому вывод из реальной практики жизни заключается в том, что вы не должны этого делать.

    Давайте будем гением компьютера.