Sind alle Methoden der Java-Eigenschaften vollständig synchronisiert?

8

Ich weiß, dass die Properties-Klasse eine Unterklasse von Hashtable ist. Also sind alle geerbten Methoden synchronisiert, aber was ist mit den anderen Methoden der Eigenschaften wie Speichern, Laden usw.? (Umgang speziell mit Java 1.6)

    
Traker 26.08.2010, 13:07
quelle

2 Antworten

14

java1.6 javadoc sagt:

  

Diese Klasse ist Thread-sicher: mehrere   Threads können sich ein einzelnes Properties teilen   Objekt ohne die Notwendigkeit für externe   Synchronisierung.

    
Nikolaus Gradwohl 26.08.2010, 13:09
quelle
5

Ich fand den Doc-Disclaimer immer irreführend, besonders für Anfänger (bitte entschuldigen Sie, wenn es nicht Ihr Fall ist).

Diese Klasse ist Thread-sicher: Mehrere Threads können ein einzelnes Properties-Objekt ohne externe Synchronisation gemeinsam nutzen.

Sogar Thread-sichere Klassen benötigen mehr Synchronisation als Sie denken. Was auf diesen Klassen synchronisiert wird, sind ihre Methoden, aber oft verwendet ein Benutzer diese Klassen in einem komplexeren Kontext.

Wenn Sie es nur bekommen, ist es in Ordnung, aber mit etwas mehr Code werden die Dinge enger:

%Vor%

Dieser Beispielcode druckt nur für shure "abc123" in einer Multithread-Umgebung, wenn der Abschnitt ein synchronisierter Block ist (und selbst dann könnten die Dinge falsch laufen).

Aus diesem Grund (und der curse-Leistung) bevorzuge ich nicht threadsichere Klassen und ich werde gezwungen zu denken: ist mein Programm threadsicher ...

    
PeterMmm 26.08.2010 13:33
quelle