Понимание необходимости синхронизации для RecordStore в J2ME - PullRequest
3 голосов
/ 25 января 2012

Читая документацию 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, или он напрямую связан с ним?

1 Ответ

2 голосов
/ 26 января 2012

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

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

На ваш второй вопрос дан ответ в Javadoc для RecordStore.enumerateRecords():

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

...