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 13:40] – [Passives Warten] Martin Pabst | parallelism:producerconsumer:start [2025/03/04 09:03] (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 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 241: | Zeile 241: | ||
</ | </ | ||
+ | |||
+ | ==== Tidying up loose ends ==== | ||
<WRAP center round tip 80%> | <WRAP center round tip 80%> | ||
- | Ich hoffe, Sie konnten | + | In den obigen Erklärungen wurden ein paar Sachverhalte vereinfacht, damit Sie das Prinzip des passiven Wartens |
- | * 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 // |
* Jedes Objekt in Java kann Monitor sein. Es | * Jedes Objekt in Java kann Monitor sein. Es | ||
* " | * " | ||
* führt eine Liste aller ihm zugeordneten Threads im Zustand '' | * führt eine Liste aller ihm zugeordneten Threads im Zustand '' | ||
* eine Liste aller ihm zugeordneten Threads im Zustand '' | * eine Liste aller ihm zugeordneten Threads im Zustand '' | ||
+ | </ | ||
+ | |||
+ | ===== Aufgaben ===== | ||
+ | ==== Aufgabe 1 ==== | ||
+ | <WRAP center round todo 80%> | ||
+ | Erweitern Sie den obigen Algorithmus zum passiven Warten so, dass es 10 Producer und 10 Verbraucher gibt und die Kapazität des Tresens erhöht werden kann (z.B. auf 3 Pizzen). \\ Sie werden dazu die Aufrufe von '' | ||
+ | [[.aufgabe1loesung: | ||
</ | </ | ||
parallelism/producerconsumer/start.1735911654.txt.gz · Zuletzt geändert: 2025/01/03 13:40 von Martin Pabst