parallelism:producerconsumer:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
parallelism:producerconsumer:start [2025/01/03 14:37] – [Tidying up loose ends] Martin Pabst | parallelism:producerconsumer:start [2025/05/04 16:25] (aktuell) – [Tidying up loose ends] Martin Pabst | ||
---|---|---|---|
Zeile 16: | Zeile 16: | ||
* Falls " | * Falls " | ||
* Falls " | * Falls " | ||
- | * Der Verbraucher | + | * Der Verbraucher |
* Falls " | * Falls " | ||
* Falls " | * Falls " | ||
- | Um passives Warten zu ermöglichen besitzt der Monitor die Methoden '' | + | Um passives Warten zu ermöglichen besitzt der Monitor die Methoden '' |
</ | </ | ||
Zeile 45: | Zeile 45: | ||
| | ||
while (anzahlPizzenTodo > 0) { | while (anzahlPizzenTodo > 0) { | ||
- | SystemTools.pause(Random.randint(10, | + | Thread.sleep(Random.randint(10, |
| | ||
} | } | ||
Zeile 64: | Zeile 64: | ||
| | ||
while (true) { | while (true) { | ||
- | SystemTools.pause(Random.randint(10, | + | Thread.sleep(Random.randint(10, |
| | ||
| | ||
Zeile 124: | Zeile 124: | ||
| | ||
while (anzahlPizzen == 1) { | while (anzahlPizzen == 1) { | ||
- | | + | |
} | } | ||
anzahlPizzen = 1; | anzahlPizzen = 1; | ||
Zeile 132: | Zeile 132: | ||
| | ||
while(anzahlPizzen == 0) { | while(anzahlPizzen == 0) { | ||
- | | + | |
} | } | ||
anzahlPizzen = 0; | anzahlPizzen = 0; | ||
Zeile 183: | Zeile 183: | ||
int timeSinceLastPizzaBaked = System.currentTimeMillis() - lastTimePizzaBaked; | int timeSinceLastPizzaBaked = System.currentTimeMillis() - lastTimePizzaBaked; | ||
| | ||
- | | + | |
lastTimePizzaBaked = System.currentTimeMillis(); | lastTimePizzaBaked = System.currentTimeMillis(); | ||
} | } | ||
Zeile 210: | Zeile 210: | ||
} | } | ||
// Lisa bringt jetzt die Pizza zu den Kunden: | // Lisa bringt jetzt die Pizza zu den Kunden: | ||
- | SystemTools.pause(Random.randint(10, | + | Thread.sleep(Random.randint(10, |
} | } | ||
} | } | ||
Zeile 222: | Zeile 222: | ||
| | ||
while (anzahlPizzen == 1) { | while (anzahlPizzen == 1) { | ||
- | | + | |
} | } | ||
anzahlPizzen = 1; | anzahlPizzen = 1; | ||
Zeile 230: | Zeile 230: | ||
| | ||
while(anzahlPizzen == 0) { | while(anzahlPizzen == 0) { | ||
- | | + | |
} | } | ||
anzahlPizzen = 0; | anzahlPizzen = 0; | ||
Zeile 246: | Zeile 246: | ||
<WRAP center round tip 80%> | <WRAP center round tip 80%> | ||
In den obigen Erklärungen wurden ein paar Sachverhalte vereinfacht, | In den obigen Erklärungen wurden ein paar Sachverhalte vereinfacht, | ||
- | * Solange es nur **genau einen Erzeuger und genau einen Verbraucher** gibt, könnte man statt der while-Loops in den Methoden '' | + | * Solange es nur **genau einen Erzeuger und genau einen Verbraucher** gibt, könnte man statt der while-Loops in den Methoden '' |
- | * In den obigen Erklärungen wurde vereinfachend so getan, also ob der Aufruf von '' | + | * In den obigen Erklärungen wurde vereinfachend so getan, also ob der Aufruf von '' |
{{ : | {{ : | ||
* Durch den Aufruf von //wait()// des Monitor-Objekts geht der Thread in den Zustand //waiting// über. Wird später irgendwann die Methode // | * Durch den Aufruf von //wait()// des Monitor-Objekts geht der Thread in den Zustand //waiting// über. Wird später irgendwann die Methode // | ||
+ | * Der Aufruf von //wait()// bewirkt nicht nur, dass der aktuelle Thread in den Zustand //waiting// übergeht, sondern zusätzlich, | ||
* Jedes Objekt in Java kann Monitor sein. Es | * Jedes Objekt in Java kann Monitor sein. Es | ||
* " | * " |
parallelism/producerconsumer/start.1735915050.txt.gz · Zuletzt geändert: 2025/01/03 14:37 von Martin Pabst