Проблема
Мне необходимо убедиться, что при изменении группы объектов в потоке A их изменения обновляются в унисон в потоке B. Изменения также не должны блокировать Thread-A, поэтому объекты отсоединяются. Никакие изменения не вносятся в сущность в потоке-A, когда нить-B обновляет их.
Вопрос
Как лучше всего решить эту проблему? Если нет, то что? Это идиома в безопасности? Если да, то почему?
Код
Шаг 1 (Тема A): создание объекта и сохранение в коллекции
Collection<MyEntity> collection = ...;
MyEntity entity = new MyEntity();
entity.setValue(1);
collection.add(entity);
Шаг 2 (Поток B): сохранить объект, созданный в потоке A, затем отсоединить
Session session = ...; // assume initialized
Transaction transaction = ...; // assume initialized
transaction.being();
session.persist(entity);
transaction.commit();
session.detach(entity);
Шаг 3 (Поток-A): после обновления разрешитьобъект, который нужно изменить в Thread-A.
Шаг 4 (Thread-B): после внесения дополнительных изменений обновите Thread-B.