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

StackOverflow https://stackoverflow.com/questions/9008499

Вопрос

Читая о Документация хранилища записей, можно прочитать следующее:

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top