2016-07-20 3 views
0

Я использовал @Transactional на одном из моих классов и использовал его в многопоточной среде? Насколько я понимаю, он будет выполнен в локальной среде потока и является потокобезопасным.Является ли пружина @transactional thread безопасной?

Теперь мой вариант использования заключается в том, что он снимает сумму со счета? может ли быть случай перечеркивания, если считываемая сумма счета грязная? Я не уверен, что было бы безопасно быть таким, каким оно есть сейчас, или мне нужно синхронизировать свои функции.

Любые советы будут очень апробированы.

+1

Spring использует базовую реализацию базы данных для транзакций, поэтому они являются потокобезопасными, поскольку базовая база данных может быть. – sturcotte06

+3

Изоляция транзакций - это другая проблема безопасности потоков. –

+1

Натан прав. Посмотрите в механизмах блокировки, предоставляемых вашей базой данных, и ваш DB поддерживает Java API (JPA, JDBC и т. Д.). – davidxxx

ответ

1

Вам необходимо установить уровень изоляции транзакций для защиты от грязных чтений из базы данных, а не беспокоиться о безопасности потоков. База данных позаботится об аспекте «грязного чтения» этого вопроса, а не о потоковой модели Spring.

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