Понимание потребностей синхронизации для RecordStore в J2ME

Чтение Документации RecordStore можно прочитать следующее:

Record store implementations ensure that all individual record store operations are atomic, synchronous, and serialized, so no corruption will occur with multiple accesses.

а затем в следующем предложении:

However, if a MIDlet uses multiple threads to access a record store, it is the MIDlet's responsibility to coordinate this access or unintended consequences may result.

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

И в случае, если мне нужна итерация, если я использую RecordEnumeration, делает ли метод enumerateRecords снимок RecordStore, или он напрямую связан с ним?


person Bimp    schedule 25.01.2012    source источник


Ответы (1)


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

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

На ваш второй вопрос дан ответ в Javadoc для _ 1_:

keepUpdated - если true, перечислитель будет поддерживать текущее перечисление при любых изменениях в записях хранилища записей. Используйте с осторожностью, так как это может повлиять на производительность. Если установлено значение false, перечисление не будет поддерживаться в актуальном состоянии и может возвращать идентификаторы записей для удаленных записей или пропущенных записей, добавленных позже. Он также может возвращать неупорядоченные записи, которые были изменены после построения перечисления. Обратите внимание, что любые изменения записей в хранилище записей точно отражаются при последующем извлечении записи либо напрямую, либо через перечисление. Установка этого параметра в ложь подвергает риску порядок фильтрации и сортировки перечисления при изменении, добавлении или удалении записей.

person funkybro    schedule 26.01.2012
comment
Думаю, в этом есть смысл. - person Bimp; 26.01.2012