Hallo zusammen, mal wieder eine Frage diesmal bezogen auf das Thema Threads - Die Aufgabe:
Die Ausgabe:
Das allgemeine Grundproblem welches ich habe, ist die Tatsache dass ich schon nicht weiß, wie die erste Ausgabe überhaupt zu Stande kommt.
Könnte mir jemand irgendwie nen bisschen erklären, wie das Programm arbeitet? Nach welchen Schritten? Also es scheint so als würde ich den Zusammenhang zwischen Threads und dem Programm nicht im Ansatz verstehen, deshalb hoffe ich darauf dass mir es jemand anfängerfreundlich erklären könnte
Ich bedanke mich voraus!
class Lager {
private int bestand;
private static final int kapazität = 20;
public void einlagern() {
if (bestand+5 <= kapazität) {
bestand+=5;
System.out.println("nach einlagern :" + bestand);
}
}
public void entnehmen() {
if (bestand-3 >= 0) {
bestand-=3;
System.out.println("nach entnehmen :" + bestand);
}
}
}
Ein Produzenten-Thread-Objekt versucht in einer Endlosschleife jeweils Waren einzulagern,
wie der folgende Java-Quelltext zeigt:
class ProduzentThread extends Thread {
private Lager lager;
ProduzentThread(Lager lager) {
this.lager = lager;
}
public void run() {
while(true){
lager.einlagern();
}
}
}
Analog dazu versucht ein Konsumenten-Thread-Objekt in einer Endlosschleife jeweils Waren
aus dem Lagerbestand zu entnehmen. Der Quelltext ist analog zum Produzenten gestaltet. In
der while-Schleife wird hier die Methode lager.entnehmen() aufgerufen.
In ihrer Main-Methode wird jeweils ein Objekt der Klasse Lager, ProduzentThread und
KonsumentThread angelegt (vgl. Skizze). Anschließend wird erst pt.start() und
dann kt.start() aufgerufen.
Die Ausgabe:
Java:
Eine Ausführung der Anwendung führt zu folgender Ausgabe:
...........
nach entnehmen : 1
nach einlagern : 6
nach einlagern : 8
nach einlagern : 13
nach einlagern : 18
nach entnehmen : 3
nach entnehmen : 15
nach entnehmen : 12
Das allgemeine Grundproblem welches ich habe, ist die Tatsache dass ich schon nicht weiß, wie die erste Ausgabe überhaupt zu Stande kommt.
Könnte mir jemand irgendwie nen bisschen erklären, wie das Programm arbeitet? Nach welchen Schritten? Also es scheint so als würde ich den Zusammenhang zwischen Threads und dem Programm nicht im Ansatz verstehen, deshalb hoffe ich darauf dass mir es jemand anfängerfreundlich erklären könnte
Ich bedanke mich voraus!