Hallo,
hab ein Programm geschrieben, wo 3 Threads paralell auf ein Lager zugreifen sollen.
Ein Thread soll das Lager auffüllen (Erzeuger) und zwei Threads (Konsument) es leeren. Es soll nur eine synchronisierte Methode geben. Wie mach ich denn das jetzt mit dem notify, weil jetzt warten nur die Konsument-Threads und der Erzeuger-Thread läuft.
hab ein Programm geschrieben, wo 3 Threads paralell auf ein Lager zugreifen sollen.
Ein Thread soll das Lager auffüllen (Erzeuger) und zwei Threads (Konsument) es leeren. Es soll nur eine synchronisierte Methode geben. Wie mach ich denn das jetzt mit dem notify, weil jetzt warten nur die Konsument-Threads und der Erzeuger-Thread läuft.
Code:
public synchronized void aenderungBestand(int x)
{
// Beginn kritischer Abschnitt
if(x>0){
bestand+=x;
// System.out.println(Thread.currentThread()+" 1");
}
if(bestand==0){
try{
// System.out.println(Thread.currentThread()+" 2");
wait();
// System.out.println(Thread.currentThread()+" 3");
}
catch(InterruptedException ie){
// System.out.println("Warten wurde unterbrochen"+" 4");
// System.exit(1);
}
}
if(x<0){
bestand+=x;
}
// System.out.println(Thread.currentThread()+" 5");
notifyAll();
// System.out.println(Thread.currentThread()+" 6");
aendeungsnr++;
if (x > 0)
zugang += x;
else
abgang -= x;
// Ende des kritischen Abschnitts
}