У меня есть поток с именем T1
для чтения плоского файла и его разбора. Мне нужно создать новый поток под названием T2
для разбора некоторой части этого файла, а позже этот поток T2
должен будет обновить статус исходного объекта, который также анализируется и обновляется исходным потоком T1
. Как я могу справиться с этой ситуацией?
Я получаю плоский файл, имеющий следующие образцы записей:
AAAA
BBBB
AACC
BBCC
AADD
BBDD
Сначала этот файл сохраняется в базе данных в статусе Received
. Теперь все записи, начинающиеся с BB
или с AA
, должны обрабатываться в отдельном потоке. После успешного анализа оба потока попытаются обновить статус этого файлового объекта в базе данных до Parsed
. В некоторых случаях я получаю staleObjectException
. Изменить: И работа, выполняемая любым потоком перед исключением, теряется. Мы используем оптимистичную блокировку. Каков наилучший способ избежать этой проблемы?
Возможные исключения в спящем режиме, когда два потока обновляют один и тот же объект?
Вышеприведенная статья помогает понять ее часть, но это не помогает решить мою проблему.