Wie erstelle ich eine Sperre (concurrent.locks.Lock) in Android?

8

Das muss wirklich offensichtlich sein, aber ich kann die Antwort nicht erkennen. Ich muss eine Variable um eine Variable legen, um sicherzustellen, dass einige rassgefährdende Bedingungen vermieden werden. Von dem, was ich sehen kann, existiert eine ziemlich einfache Lösung mit Lock, entsprechend den Androiden:

%Vor%

So weit, so gut. Allerdings kann ich nicht die erste Zeile arbeiten. Es scheint so etwas wie:

%Vor%

Stimmt möglicherweise, aber Eclipse-Berichte: "Der Typ kann nicht instanziert werden" - und nicht mehr.

Irgendwelche Vorschläge?

    
Neil Townsend 06.01.2013, 21:24
quelle

2 Antworten

11

Wenn Sie sehr daran interessiert sind, Lock zu verwenden, müssen Sie eine Lock -Implementierung wählen, da Sie Interfaces nicht instanziieren können. Wie in den Dokumenten Sie haben 3 Möglichkeiten:

Sie suchen wahrscheinlich nach dem ReentrantLock möglicherweise mit einigen Condition s

Das bedeutet, dass Sie anstelle von Lock l = new Lock(); Folgendes tun würden:

%Vor%

Wenn jedoch alles, was Sie sperren müssen, ein kleiner Teil ist, ist eine synchronisierte Block / Methode sauberer (wie von @Leonidos & amp; @assylias vorgeschlagen).

Wenn Sie eine Methode zum Festlegen des Werts haben, können Sie Folgendes tun:

%Vor%

oder wenn dies ein Teil einer größeren Methode ist:

%Vor%     
A--C 06.01.2013, 21:27
quelle
1

Nur weil Lock eine Schnittstelle ist und nicht instanziiert werden kann. Verwenden Sie seine Unterklassen.

    
Andrey Atapin 06.01.2013 21:28
quelle

Tags und Links