Hallöchen,
ich verusche zwei Threads mittels Peterson Algorithmus zu synchronisieren. Ist es möglich, mittels Konsolenausgabe zu zeigen, dass einer der Threads wartet?
So wie ich das gemacht habe funktioniert das leider nicht, die Methoden addProduct und takeProduct werden je von einem Thread in einer Schleife ausgeführt. Leider wird die System.out.println() Funktion nicht beachtet, wißt ihr was ich das falsch mache?
ich verusche zwei Threads mittels Peterson Algorithmus zu synchronisieren. Ist es möglich, mittels Konsolenausgabe zu zeigen, dass einer der Threads wartet?
So wie ich das gemacht habe funktioniert das leider nicht, die Methoden addProduct und takeProduct werden je von einem Thread in einer Schleife ausgeführt. Leider wird die System.out.println() Funktion nicht beachtet, wißt ihr was ich das falsch mache?
Java:
private boolean flag0 = false, flag1 = false;
int turn;
public synchronized void addProduct(Product product) throws InterruptedException
{
flag0 = true;
turn = 1;
while(flag1 && (turn == 1))
{
System.out.println("Produzent wartet");
wait();
}
stack.add(product);
flag0 = false;
notify();
}
public synchronized Product takeProduct() throws InterruptedException
{
flag1 = true;
turn = 0;
while(flag0 && (turn == 0))
{
System.out.println("Consumer wartet");
wait();
}
flag1 = false;
notify();
return stack.poll();
}
Zuletzt bearbeitet: