E
Eddie
Gast
Hallo zusammen,
ich lese gerade das Kapitel zum Thema Threads in der Java-Insel und habe eine grundsätlizche Frage zur Synchronisierung. Wann die Synchronisierung notwendig ist, ist dort leider mehr anhand von Beispielen als grundsätzlich erklärt. Folgendes habe ich schon verstanden:
Wenn alle Threads nur lesend auf eine Variable zugreifen, besteht kein Handlungsbedarf.
Wenn zwei Threads gleichzeitig, jeweils lesend und schreibend, auf eine Variable zugreifen, muß synchronisiert werden. Beispiel: Zwei Threads wollen jeweils i++ ausführen. Dann muss sichergestellt werden, daß die Threads nicht zwischen i lesen und (i+1) schreiben unterbrochen werden.
Was ist aber, wenn ein Thread schreibt und der andere nur liest. Dann hängt doch das Ergebnis des lesenden Threads davon ab, ob vor oder nach dem Lesezugriff geschrieben wurde. Ist das also eine "race condition"? Jetzt ist mir aber auch nicht klar, wie sich dieses Problem durch Synchronisation verhindern lassen sollte ???:L
besten Dank
Eddie
ich lese gerade das Kapitel zum Thema Threads in der Java-Insel und habe eine grundsätlizche Frage zur Synchronisierung. Wann die Synchronisierung notwendig ist, ist dort leider mehr anhand von Beispielen als grundsätzlich erklärt. Folgendes habe ich schon verstanden:
Wenn alle Threads nur lesend auf eine Variable zugreifen, besteht kein Handlungsbedarf.
Wenn zwei Threads gleichzeitig, jeweils lesend und schreibend, auf eine Variable zugreifen, muß synchronisiert werden. Beispiel: Zwei Threads wollen jeweils i++ ausführen. Dann muss sichergestellt werden, daß die Threads nicht zwischen i lesen und (i+1) schreiben unterbrochen werden.
Was ist aber, wenn ein Thread schreibt und der andere nur liest. Dann hängt doch das Ergebnis des lesenden Threads davon ab, ob vor oder nach dem Lesezugriff geschrieben wurde. Ist das also eine "race condition"? Jetzt ist mir aber auch nicht klar, wie sich dieses Problem durch Synchronisation verhindern lassen sollte ???:L
besten Dank
Eddie