(cast Philosopher)
Test-SJ
Shahnam Javidnia 2025-05-03 16:12:25 +02:00
parent 7723b7fb35
commit 8291fbed75
2 changed files with 10 additions and 11 deletions

View File

@ -20,7 +20,7 @@ public interface IPhilosopher {
void signal();
boolean isEating();
// boolean isEating();
default void log(int seat, String message) {

View File

@ -7,8 +7,8 @@ import static pp.PhilosopherExperiment.*;
public class Philosopher extends Thread implements IPhilosopher {
private int seat;
private IPhilosopher left;
private IPhilosopher right;
private Philosopher left;
private Philosopher right;
private Lock table;
private Condition canEat;
private boolean eating = false;
@ -18,15 +18,14 @@ public class Philosopher extends Thread implements IPhilosopher {
public void setLeft(IPhilosopher left) {
// TODO Auto-generated method stub
// Cast auf Philosopher erforderlich
this.left = left;
this.left = (Philosopher) left;
}
@Override
public void setRight(IPhilosopher right) {
// TODO Auto-generated method stub
// Cast auf Philosopher erforderlich
this.right = right;
this.right = (Philosopher) right;
}
@Override
@ -36,7 +35,7 @@ public class Philosopher extends Thread implements IPhilosopher {
@Override
public void setTable(Lock table) {
// TODO Auto-generated method stub//
// TODO Auto-generated method stub
this.table = table;
this.canEat = table.newCondition();
@ -90,7 +89,7 @@ public class Philosopher extends Thread implements IPhilosopher {
private void beginEating() throws InterruptedException {
table.lock();
try {
while (((Philosopher) left).eating || ((Philosopher) right).eating) {
while (left.eating || right.eating) {
log(seat, "wartet");
canEat.await(); // wartet, bis signal() von einem anderen Philosophen aufgerufen wird
}
@ -128,8 +127,8 @@ public class Philosopher extends Thread implements IPhilosopher {
}
// Gibt zurück, ob dieser Philosoph aktuell isst wichtig für die Nachbarn.
public boolean isEating() {
return eating;
}
// public boolean isEating() {
// return eating;
// }
}