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