Was habt Ihr mit der Klasse Table gemacht? Warum soll ein Philosopher übergeben werden?
Habt Ihr noch zusätzliche Klassen erstellt?
Was habt Ihr mit der Klasse Table gemacht? Warum soll ein Philosopher übergeben werden?
Damit der Tisch weiss welche Gabel genommen wird…
Habt Ihr noch zusätzliche Klassen erstellt?
nö
Brokkoli:
Was habt Ihr mit der Klasse Table gemacht? Warum soll ein Philosopher übergeben werden?
Damit der Tisch weiss welche Gabel genommen wird…
Ich übergebe gleich die Nummer des Philosophen. Das spart mir dann auch die getNumber()-Methode in Philosopher. Is zwar nich genau so, wie auf'm Aufgabenblatt beschrieben, geht aber wohl auch, oder?
Habt Ihr noch zusätzliche Klassen erstellt?
Ja, eine in der die main()-Methode enthalten ist, die den ganzen anderen Kram aufruft. Gut, wenn man will, kann man das auch nur als Testklasse ansehen.
Brokkoli:
Was habt Ihr mit der Klasse Table gemacht? Warum soll ein Philosopher übergeben werden?
Damit der Tisch weiss welche Gabel genommen wird…
Ich übergebe gleich die Nummer des Philosophen. Das spart mir dann auch die getNumber()-Methode in Philosopher. Is zwar nich genau so, wie auf'm Aufgabenblatt beschrieben, geht aber wohl auch, oder?
Sicherlich geht auch ;) oder auch die Nummer der Gabel oder sonstwas… *g* Nur bei uns gibts immer ärger, wenn wir uns nicht genau an die Aufgabenstellung halten…
Habt Ihr noch zusätzliche Klassen erstellt?
Ja, eine in der die main()-Methode enthalten ist, die den ganzen anderen Kram aufruft. Gut, wenn man will, kann man das auch nur als Testklasse ansehen.
hmm ja die main hab ich im Tisch…
Sicherlich geht auch ;) oder auch die Nummer der Gabel oder sonstwas… *g* Nur bei uns gibts immer ärger, wenn wir uns nicht genau an die Aufgabenstellung halten…
Ärger ? Ich würd eher sagen Punktabzug… Bei einem Zettel hat er uns doch einen ganzen Punkt abgezogen weil etwas nicht ganz nach der Aufgabe war.
Aber was solls, der eine Punkt fehlt uns ja zum Glück nicht [img]
http://www.fb18.de/gfx/22.gif[/img]
Ich bekomme immer folgende Meldung, wenn ich es ausführe.
java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:426)
at Table.takeRightFork(Table.java:36)
at Philosopher.run(Philosopher.java:16)
at java.lang.Thread.run(Thread.java:536)
Hat jemand eine Ahnung?
du kannst nur wait aufrufen wenn du den monitor von dem objekt besitzt.. also erst syncronized(object), dann object.wait()
Kannst Du noch zwei Sätze mehr antworten? - Danke
du kannst wait nur in synchronized blöcken bzw synchronized methoden (die ja eigentlich das gleiche sind) verwenden.
so muss das dann aussehen (irgendwas ist ein objekt):
synchronized(irgendwas)
{
…
irgendwas.wait();
}
http://java.sun.com/docs/books/tutorial/essential/threads/waitAndNotify.htmlhttp://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html (und dann die beschreibung zu wait)
oder auch mal im script nachsehen..
Also im Skript sieht das aber ein wenig anders aus (III-49 ff). Da steht wait() immer allein, ohne "irgendwas.".
Also im Skript sieht das aber ein wenig anders aus (III-49 ff). Da steht wait() immer allein, ohne "irgendwas.".
Ist doch immer so: wenn man eine Methode aufruft ohne Objektname
als Präfix, wird "this" als implizites Objekt angenommen. Das
"irgendwas" ist folglich in dem Fall "this".
Das mit dem "irgendwas" ist also die dem Skript gegenüber
verallgemeinerte Version.
moin auch ich hab da mal ne frage…
also 1. warum arbeitet ihr mit this.wait() ? hab ich da was nicht mitbekommen oder mach ich sowieso was falsch ???
2. Ich mach das warten mit
Thread.currentThread().sleep(time);
und time ist 'n int mit time = (int)(Math.random() * 1000);
und ich wollte eigendlich wissen was fuer factoren ihr so an Math.random() gesetzt habt …
hmm …
meine Philosophen hoeren naemlich garnicht auf zu essen und dann zu denken
und ich wollte eigendlich wissen was fuer factoren ihr so an Math.random() gesetzt habt …
Also wenn du eine Verklemmung erreichen willst, dann würde ich die "Schlafzeiten" nur einige Millisekunden lang machen, ansonsten kann das dauern!
20 msec maximal haben wir genommen.. damit gehts ganz gut
und wait hat den vorteil, dass man dem philosophen dann mit notify sagen kann, dass die gabel wieder da ist *g*
aber so wie es auf dem aufgabenzettel steht wird sleep auch reichen