2013-04-17 2 views
3

Если я следующая последовательность в функцииJava JDBC потокобезопасность

void UpdateDatabase(conn) { 
    createStatement 
    executeStaement 
    getResult 
} 

ли эта последовательность вызовов Многопоточность безопасности в Java

+1

Я думаю, вам нужно показать нам еще несколько фрагментов кода, например, какие параметры используются 'createStatement',' executeStaement' и 'getResult'. Как вы называете функцию «UpdateDatabase» – Apurv

+0

Также это будет зависеть от того, какую базу данных вы используете. Обычно базы данных будут управлять параллельными запросами. Таким образом, вы не будете беспокоиться о безопасности потоков на стороне клиента db. – anoopelias

+0

Возможный дубликат [Is java.sql.Connection thread safe?] (Http://stackoverflow.com/questions/1531073/is-java-sql-connection-thread-safe) –

ответ

0

Если изменить его немного

void updateDatabase() { 
    getConnection 
    createStatement 
    executeStaement 
    getResult 
} 

он будет быть определенно потокобезопасным

+0

Ну, вопрос: «_Is эта последовательность вызовов thread safe_». И не как сделать этот поточно-безопасный – Apurv

2

Азимут ваших потоков не разделяет или иным образом синхронизировать совместно используемое состояние, выполнение выполняется только в потоковом режиме при просмотре того, что происходит внутри JVM. Что еще более важно, однако, если ваши данные все еще могут быть повреждены.

Каждое соединение JDBC должно использоваться только одним потоком за раз, что вы делаете. Однако системы баз данных определяют четыре уровня изоляции, определяя, какое состояние транзакций данных можно увидеть. Если ваши параллельные транзакции не касаются одних и тех же данных вашего штрафа. Если да, посмотрите на уровень изоляции вашей базы данных.

Смежные вопросы