2014-01-26 6 views
5

Für den folgenden Code:Gibt es eine Möglichkeit, sicherzustellen, dass der Aufruf einer externen Methode threadsicher ist?

method() { object.externalMethod(); }

Wenn externalMethod() ist nicht Thread-sicher. Sagen wir, es startet mehrere Threads, die einige unsichere Sachen machen. Können wir trotzdem sicherstellen, dass method() threadsicher ist, ohne die Implementierung von externalMethod zu kennen? Ich glaube, das Hinzufügen von "synchronisiert" ist hier nicht genug.

Antwort

4

Das Hinzufügen von synchronisiert ist genug - solange Sie auf alle Zugriffe auf das Objekt synchronisieren, nicht nur auf alle Zugriffe auf externalMethod.

Es sei denn natürlich die Interna des Objekts nicht ordnungsgemäß synchronisieren, in diesem Fall sind Sie tatsächlich nicht in der Lage, etwas zu tun. Das Objekt sollte jedoch die korrekte Art der Interaktion dokumentieren.

Verwandte Themen