2009-05-21 23 views

Antwort

15

Da etwas anderes die Instanz sperren könnte, hätten Sie einen Deadlock.

Wenn Sie das Objekt, das Sie speziell für diesen Zweck erstellt haben, sperren, wissen Sie, dass Sie die vollständige Kontrolle haben, und nichts anderes wird es unerwartet sperren.

+1

Instanz, nicht Klasse. – Shog9

+0

Sloppy von mir. Ordentlich bearbeitet. –

+0

Es ist eine Funktion, kein Bug! Was möchte eine andere Klasse exklusiven Zugriff auf diese Instanz erhalten? – Andy

2

Wenn Sie etwas öffentlich sperren, können sowohl die Klasse als auch eine andere Klasse versuchen, eine Sperre zu erhalten. Es ist einfach genug, ein Synchronisationsobjekt zu erstellen, und immer vorzuziehen;

private syncLock = new Object(); 
Verwandte Themen