eine einfache Liste zu haben:Kann ich auf die von einem synchronisierten Block in Java verwendete Sperre zugreifen?
private final List<Item> lst = new ArrayList();
Wenn ich Synchronisation benötigen, habe ich folgendes zu tun:
synchronized (lst) {
// Some code
}
Nun, ich brauche ein Condition
Objekt erstellen Lock.newCondition()
verwenden, kann ich die zugrunde liegenden Zugang Sperre verwendet von synchronized{}
, um es zu verwenden, um meine Bedingung zu erstellen, oder sollte ich synchronisierte Blöcke entfernen und ein benutzerdefiniertes Objekt Lock
verwenden?
Letzteres. Die beiden sind Differenzkonstrukte. –
Sie möchten vielleicht mehr Kontext angeben - eine Bedingung ist möglicherweise nicht notwendig für das, was Sie erreichen möchten. – assylias
Related: http://stackoverflow.com/questions/15927011/why-cant-i-directly-access-and-lock-the-implicit-lock-that-objects-use-for-sy?rq=1 – Thilo