Hallo!
ich habe heute die Aufgabe bekommen, das 5 Philosophen Problem zu lösen. Habe dies auch versucht, doch es hat nicht so richtig funktioniert.
Vielleicht kann mir jemand von euch weiterhelfen?
Danke
Hier der Code:
ich habe heute die Aufgabe bekommen, das 5 Philosophen Problem zu lösen. Habe dies auch versucht, doch es hat nicht so richtig funktioniert.
Vielleicht kann mir jemand von euch weiterhelfen?
Danke
Hier der Code:
Java:
public class Gabel {
private boolean benutzt;
public Gabel() {
benutzt = false;
}
public synchronized boolean istBenutzt() {
return benutzt;
}
public synchronized void nehmen() {
if (benutzt) {
benutzt = true;
}
}
public synchronized void ablegen() {
benutzt = false;
}
}
Java:
public class Philosoph() extends Thread {
private Gabel links;
private Gabel rechts;
private String person;
public Philosoph(String person, Gabel links, Gabel rechts) {
this.person = person;
this.links = links;
this. rechts = rechts;
zufall = new Random;
}
public void essen() {
synchronized(links) {
fertig();
synchronized(rechts) {
System.out.println(person + " - nimmt links - ");
links.nehmen();
System.out.println(persom + " - nimmt rechts - ");
rechts.nehmen();
System.out.println(person + " - isst gerade - ");
fertig();
rechts.ablegen();
links.ablegen();
}
}
public void run() {
while (true) {
fertig();
essen();
}
}
public void fertig() {
System.out.println(person + " isst nicht mehr");
try {
sleep(zufall.nextInt(1000));
}
catch (InterruptedException e) {
}
}
}
}
Java:
public class PP {
Gabel eins = new Gabel();
Gabel zwei = new Gabel();
Gabel drei = new Gabel();
Gabel vier = new Gabel();
Gabel fuenf = new Gabel();
Philosoph a = new Philosoph("Philosoph A", eins, zwei);
Philosoph b = new Philosoph("Philosoph A", zwei, drei);
Philosoph c = new Philosoph("Philosoph A", drei, vier);
Philosoph d = new Philosoph("Philosoph A", vier, fuenf);
Philosoph e = new Philosoph("Philosoph A", fuenf, eins);
a.start();
b.start()
c.start();
d.start();
e.start();
}