2011-02-10 5 views
3

Я использую Java и MySql в качестве базы данных.Проблема с транзакцией

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

Но случается, что экземпляры работают так быстро, что, когда один экземпляр обращается к одной записи, другой экземпляр также получает доступ к одной и той же записи до того, как обновление будет выполнено в «В процессе» первым экземпляром. Что делать, чтобы обновление также имело место до того, как другой экземпляр может получить к нему доступ? Я использовал conn.setTransactionIsolation(conn.TRANSACTION_READ_COMMITTED) в своем коде, но это тоже не помогает.

Заранее спасибо.

ответ

0

Ну, я думаю, что решение вашей проблемы - это блок синхронизации. Есть два способа сделать это. Или напишите блок синхронизации, либо поместите этот код базы данных обновлений в один метод, который синхронизирован. Таким образом, если один поток выполняет изменения, ни один другой поток не получит к нему доступа. Дополнительная справочная информация click here

+0

Это не поможет вообще, когда есть на самом деле несколько JVMs участие. И я думаю, что здесь проблема. –

+0

@ Joachim Sauer может предложить вам решение? – pritsag

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