Ein wunder schönen guten Abend wünsche ich.
Ich komme nicht weiter habe mir viele sachen zu Threads durchgelsen aber er gelingt mir nicht diese Aufgabe zu lösen.
Wenn ich die Klassen hier habe :
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 ProduzentThread-Objekt versucht in einer Endlosschleife jeweils //Waren einzulagern.
class ProduzentThread extends Thread {
private Lager lager;
ProduzentThread(Lager lager) {
this.lager = lager;
}
public void run() {
while(true){
lager.einlagern();
}
}
}
//Analog dazu versucht ein KonsumentThread-Objekt in einer Endlosschleife jeweils Waren aus dem Lagerbestand um zu entnehmen. Der Quelltext ist analog zum Produzenten gestaltet. In der While-Schleife wird hier die Methode lager.entnehmen()aufgerufen.
In einer 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.
Jetzt soll:
Mit den Methoden wait() und notifyAll(), um sicherzustellen, dass der ProduzentThread wartet, bis im Lager wieder genügend freie Kapazität für eine neue Lieferung vorhanden ist und dass, der KonsumentThread wartet, bis das Lager mindestens einen Bestand von 3 hat, bevor er etwas aus dem Lager entnimmt. Es sollen auch die veränderten Methoden einlagern() und entnehmen() der Klasse Lager an gegeben werden.
Ich weiß nicht weiter bitte um Hilfe.
Liebe Grüße Stefan