Comment puis-je créer un Verrou (simultanées.les verrous.Lock) dans Android?
Ce doit être vraiment évident, mais je ne peux pas repérer la réponse. J'ai besoin de mettre un verrou autour d'une variable pour s'assurer qu'un couple de course-les risques sont évités. De ce que je peux voir, une jolie solution simple existe, utilisez la fonction de Verrouillage, selon les docs android:
Lock l = ...;
l.lock();
try {
//access the resource protected by this lock
}
finally {
l.unlock();
}
Donc bon. Cependant, je ne peux pas faire la première ligne de travail. Il semblerait que quelque chose comme:
Lock l = new Lock();
Pourrait être correct, mais eclipse rapports, "Ne peut pas instancier le type de Verrouillage" - et rien de plus.
Des suggestions?
- google: java bloc synchronisé
Vous devez vous connecter pour publier un commentaire.
Si vous êtes très attaché à l'aide d'un
Lock
, vous devez choisir unLock
mise en œuvre que vous ne peut pas instancier des interfaces.Comme par le docs
Vous avez 3 choix:
Condition
s sont liés àLock
s.Vous êtes probablement à la recherche pour le
ReentrantLock
peut-être avec quelquesCondition
sCela signifie qu'au lieu de
Lock l = new Lock();
vous feriez:Cependant, si vous avez besoin de verrouiller est qu'une petite partie, un bloc synchronisé/méthode est plus propre (comme suggéré par @Leonidos & @assylias).
Si vous avez une méthode qui définit la valeur, vous pouvez le faire:
ou si c'est une partie d'une plus grande méthode:
Juste parce que
Lock
est une interface ne peut pas être instanciée. L'utilisation de ses sous-classes.