api:documentation:threads:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
api:documentation:threads:start [2024/10/28 12:26] – [Beispiel 1: 11 Threads zählen gleichzeitig] martin | api:documentation:threads:start [2024/10/28 21:34] (aktuell) – [Synchronized-Methode] martin | ||
---|---|---|---|
Zeile 57: | Zeile 57: | ||
====== Race condition und Lösungen ====== | ====== Race condition und Lösungen ====== | ||
- | <WRAP center round info 80%> | + | <WRAP center round todo 80%> |
- | Im folgenden Beispiel | + | Im folgenden Beispiel |
+ | Am Ende der Arbeit meldet jeder Thread den aktuellen Zustand des Counters. Man würde erwarten, dass der Thread, der als letztes fertig wird, die Zahl | ||
+ | 3000000 ausgibt. \\ \\ | ||
+ | * Starten Sie das Programm mehrmals und sehen Sie sich die Ausgabe an. | ||
+ | * Wie lässt sich die Ausgabe erklären? | ||
</ | </ | ||
Zeile 71: | Zeile 75: | ||
for (int i = 0; i < 3; i++) { | for (int i = 0; i < 3; i++) { | ||
- | | + | |
| | ||
| | ||
Zeile 113: | Zeile 117: | ||
</ | </ | ||
+ | |||
+ | <WRAP center round info 80%> | ||
+ | {{ : | ||
+ | Im rechts stehenden Sequenzdiagramm ist zu sehen, was passiert, wenn zwei Threads gleichzeitig die Methode '' | ||
+ | Man nennt diesen Effekt eine **race condition**. Sie entsteht dadurch, dass die Anweisungen in der Methode '' | ||
+ | </ | ||
+ | |||
+ | ===== Synchronized-Methode ===== | ||
+ | <WRAP center round info 80%> | ||
+ | {{ : | ||
+ | Wir brauchen eine Möglichkeit, | ||
+ | * Vergleichen Sie die Deklaration der Methode '' | ||
+ | * Starten Sie das Programm mehrmals. Erklären Sie die Ausgabe! | ||
+ | </ | ||
< | < | ||
Zeile 123: | Zeile 141: | ||
for (int i = 0; i < 3; i++) { | for (int i = 0; i < 3; i++) { | ||
- | | + | |
| | ||
| | ||
Zeile 166: | Zeile 184: | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== Monitorkonzept ===== | ||
+ |
api/documentation/threads/start.1730114805.txt.gz · Zuletzt geändert: 2024/10/28 12:26 von martin