在RecordStore documentation上阅读,你可以读到以下内容:
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的快照,还是直接连接到它?
发布于 2012-01-26 16:29:16
但是,如果MIDlet使用多个线程来访问记录存储,则MIDlet负责协调这种访问,否则可能会导致意外的后果。
我认为这意味着两个线程同时读取和写入存储中的记录可能会产生不期望的结果;特别是当您依赖于特定顺序的存储,或者记录具有已知的索引时。
您的第二个问题在RecordStore.enumerateRecords()的Javadoc中得到了回答
keepUpdated-如果为true,则枚举器将使其枚举与记录存储的记录中的任何更改保持最新。请谨慎使用,因为这可能会导致性能问题。如果为false,则枚举将不会保持最新,并且可能会为已删除的记录或稍后添加的遗漏记录返回recordIds。它还可能无序地返回在生成枚举后修改过的记录。请注意,当稍后直接或通过枚举检索记录时,对记录存储区中记录的任何更改都会准确地反映出来。将此参数设置为false的风险是在修改、添加或删除记录时枚举的筛选和排序顺序。
https://stackoverflow.com/questions/9008499
复制相似问题