Ich habe folgenden Code:
Code:
public void RunServer() {
synchronized (this) {
log("Methode 'RunServer'");
log("openServer");
ObjectServer db4oServer = Db4o.openServer("demo.yap", 4488);
log("grantAccess");
db4oServer.grantAccess("user", "pass");
// We only need low priority since the db4o server has
// it's own thread.
Thread.currentThread().setName(this.getClass().getName());
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
try {
this.notifyAll();
while (!stop) {
this.notify();
ConsoleIO con = new ConsoleIO();
String s = con.promptAndReadString("Stoppen mit 'STOP': ");
if (s.equalsIgnoreCase("STOP"))
stop = true;
this.wait(1);
}
} catch (
Exception e) {
e.printStackTrace();
}
log("close");
db4oServer.close();
}
}
Wie man an dem Kommentar sieht, erzeugt openServer automatisch einen eigenen Thread. (Wenn ich das richtig verstanden habe.) Was mich jetzt interessiert ist die while-Schleife. Warum wird da nicht ständig "Stoppen mit 'STOP':" ausgegeben, sondern nur einmal? Und wenn man dann STOP eingibt, wird die Schleife verlassen. Es funktioniert also so, wie ich es mir vorstelle. Nur warum tut es das?