Frage

Lesen Sie auf der RecordStore Dokumentation, kann man Folgendes lesen:

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

und dann gleich im nächsten Satz:

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.

Ich bin mir nicht sicher, was ich davon halten soll.Die Operationen sind atomar und synchron, aber ich muss den Zugriff selbst synchronisieren?Angenommen, ich müsste die Datensätze nicht durchlaufen, welche Art von Synchronisation benötige ich für einfache Funktionen zum Hinzufügen / Aktualisieren / Löschen?

Und falls ich eine Iteration brauche, wenn ich eine verwende RecordEnumeration, tut das enumerateRecords methode Machen Sie einen Schnappschuss des RecordStore, oder ist es direkt damit verbunden?

War es hilfreich?

Lösung

Wenn ein MIDlet jedoch mehrere Threads für den Zugriff auf einen Datensatzspeicher verwendet, liegt es in der Verantwortung des MIDlets, diesen Zugriff zu koordinieren, da dies zu unbeabsichtigten Konsequenzen führen kann.

Ich denke, das bedeutet, dass zwei Threads, die gleichzeitig Datensätze in einem Geschäft lesen und schreiben, wahrscheinlich zu unerwünschten Ergebnissen führen;insbesondere, wenn Sie sich darauf verlassen, dass sich ein Geschäft in einer bestimmten Reihenfolge befindet oder dass die Datensätze bekannte Indizes haben.

Ihre zweite Frage wird im Javadoc für beantwortet RecordStore.enumerateRecords():

keepUpdated - wenn true, behält der Enumerator seine Aufzählung bei allen Änderungen in den Datensätzen des Plattenspeichers auf dem neuesten Stand.Verwenden Sie es mit Vorsicht, da dies mögliche Auswirkungen auf die Leistung haben kann.Wenn false, wird die Aufzählung nicht aktuell gehalten und gibt möglicherweise Datensatz-IDs für gelöschte Datensätze oder fehlende Datensätze zurück, die später hinzugefügt werden.Es kann auch Datensätze außer Betrieb zurückgeben, die nach dem Erstellen der Aufzählung geändert wurden.Beachten Sie, dass alle Änderungen an Datensätzen im Datensatzspeicher genau wiedergegeben werden, wenn der Datensatz später entweder direkt oder über die Aufzählung abgerufen wird.Das Risiko, das durch Setzen dieses Parameters auf false besteht, ist die Filter- und Sortierreihenfolge der Aufzählung, wenn Datensätze geändert, hinzugefügt oder gelöscht werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top