Java me 了解J2ME中记录存储的同步需求

Java me 了解J2ME中记录存储的同步需求,java-me,synchronization,midp,recordstore,Java Me,Synchronization,Midp,Recordstore,通过阅读,可以阅读以下内容: 记录存储实现确保所有单个记录存储操作都是原子的、同步的和序列化的,因此在多次访问时不会发生损坏。 然后在下一句话: 但是,如果MIDlet使用多个线程访问记录存储,则MIDlet负责协调此访问,否则可能导致意外后果 我不知道该怎么办。操作是原子的和同步的,但我必须自己同步访问?假设我不需要对记录进行迭代,那么对于简单的添加/更新/删除函数,我需要哪种类型的同步 如果我确实需要迭代,如果我使用RecordEnumeration,那么enumerateRecords方法

通过阅读,可以阅读以下内容:

记录存储实现确保所有单个记录存储操作都是原子的、同步的和序列化的,因此在多次访问时不会发生损坏。

然后在下一句话:

但是,如果MIDlet使用多个线程访问记录存储,则MIDlet负责协调此访问,否则可能导致意外后果

我不知道该怎么办。操作是原子的和同步的,但我必须自己同步访问?假设我不需要对记录进行迭代,那么对于简单的添加/更新/删除函数,我需要哪种类型的同步

如果我确实需要迭代,如果我使用
RecordEnumeration
,那么
enumerateRecords
方法是拍摄
RecordStore
的快照,还是直接连接到它

但是,如果一个MIDlet使用多个线程访问一个记录存储,则MIDlet负责协调此访问,否则可能会导致意外后果

我认为这意味着两个线程同时读取和写入存储中的记录可能会产生不希望的结果;特别是当您依赖于一个按特定顺序排列的存储,或者依赖于记录具有已知索引时

您的第二个问题在Javadoc中得到了回答:

keepUpdated
-如果为true,枚举器将保持其枚举的最新状态,并对记录存储的记录进行任何更改。使用时要小心,因为可能会对性能造成影响。如果为false,则枚举将不会保持最新状态,并且可能会返回已删除记录的RecordID或丢失以后添加的记录。它还可能返回在生成枚举后修改过的无序记录。请注意,以后直接或通过枚举检索记录时,记录存储中记录的任何更改都会准确反映出来。如果将此参数设置为false,则在修改、添加或删除记录时,枚举的过滤和排序顺序会有风险


我想这是有道理的。