Verwendet Sperren (java.util.concurrent.locks.Lock
) anstelle von Schlüsselwort synchronized
+ Methode wait()
und Methode völlig gleich?Explizite Sperren vs implizite Sperren
Kann ich Thread-sicher mit Sperren (explizite Sperren) anstelle von impliziten Sperren (synchronized
) programmieren?
Wie ich weiß, habe ich immer implizite Sperren verwendet. Ich bin mir der Vorteile der Lock
Schnittstellen-Implementierung wie Methoden bewusst: isLocked()
, getLockQueueLength()
, getHoldCount()
, etc ... aber noch die alte Schule Weg (wait()
und notify()
) hätte andere Grenzen als diese Methoden nicht?
Ich bin mir auch der Möglichkeit bewusst, eine Sperre mit einem (boolean fairness) Parameter zu konstruieren, der Mangel an Hunger ermöglicht.
Nun, es ist nicht * total * das gleiche, als wären sie zu 100% identisch, dann wäre die Existenz eines überflüssig ;-) –
@Joachim Sauer Sicherlich wäre es nicht das erste Mal, dass eine Programmiersprache zwei identische hätte Möglichkeiten, das Gleiche zu tun. – Patashu
@Patashu: sicherlich nicht. Aber es ist unwahrscheinlich, dass sie eine zweite Option so lange nach der ersten hinzufügen, wenn es nicht zumindest einige Vorteile gibt (wie die 'isLocked()' Methode, ...). –