Re: einfaches Problem beim Synchronisieren
- From: Ernst Baumann <carlox@xxxxxx>
- Date: Fri, 30 Nov 2007 15:26:47 +0100
Danke für deine Ausführungen.
D.h. bis der Wartezustand beendet wird.
Kommt das davon her, dass durch wait das Schloß zeizweise wieder
aufgeschlossen wird (bis zum Aufruf von wait) und dadurch im anderen
Thread der synchronized Bereich abgearbeitet werden kann?
... (bis zum Ende des Aufrufes von wait()) ...
1)
Du hast zwei ThreadCounter-Objekte, und jedes davon hat sein
eigenes MyLockObject, auf dem synchronisiert wird. Das hat
also in etwa den selben Effekt, als würdest du gar nicht
synchronisieren.
Dadurch kann es also vorkommen, dass die beiden Threads
parallel ihren synchronized-Block betreten, und dass
das dann (zufällig) so aussieht:
t1 t2 Zahl Ausgabe
2
zahl++ 3
(Merke 2)
zahl++ 4
(Merke 3)
println(3) 4 3
println(2) 4 2
(Dadurch, dass du hier zahl++ als Ausdruck
verwendest, wird das ganze gleich noch ein
Stück komplizierter, denn das hat ja als
Ergebnis den alten Wert, nicht den neuen.)
Diesen Fall ("Dadurch, dass du hier zahl++ als Ausdruck...")
berücksichtigst du in deiner Erklärung. Ist das richtig?
2)
System.out.println(zahl++);
macht doch dasselbe wie
System.out.println(zahl);
zahl++;
Dann müsste aber in deiner letzten Zeile
println(2) 4 2der akteulle Wert von zahl ausgegeben werden und das ist dann nicht
mehr 2, sondern 4.
Kann es also sein, dass also
System.out.println(zahl++);
und
System.out.println(zahl);
zahl++;
nicht dasselbe machen?
mfg
Ernst
.
- References:
- einfaches Problem beim Synchronisieren
- From: Ernst Baumann
- Re: einfaches Problem beim Synchronisieren
- From: David Grabandt
- Re: einfaches Problem beim Synchronisieren
- From: Ernst Baumann
- Re: einfaches Problem beim Synchronisieren
- From: Guido Weber
- Re: einfaches Problem beim Synchronisieren
- From: Ernst Baumann
- Re: einfaches Problem beim Synchronisieren
- From: Paul Ebermann
- einfaches Problem beim Synchronisieren
- Prev by Date: enum als persistente Entity
- Next by Date: Re: Eklige Vergleiche von Referenzen mittels ==
- Previous by thread: Re: einfaches Problem beim Synchronisieren
- Next by thread: enum als persistente Entity
- Index(es):