Bender86
Lieutenant
- Registriert
- Jan. 2007
- Beiträge
- 707
Moin zusammen!
Da bei mir nächstes Semester ein Software-Projekt ansteht, versuche ich mich grade ein bisschen in Threads und das Model/Observer Prinzip einzuarbeiten. Mein Ziel ist im Moment folgendes:
- Es gibt eine Klasse "Init", die ein kleines Programm darstellt das..
- Einen "ServerThread" erzeugt und startet, der später einmal einen Port belegen soll, auf Clients horchen, was ein Server so macht...
- Der "ServerThread" startet im Kontruktor einen "CommandThread". Letzterer soll Konsoleneingaben vom Benutzer entgegen nehmen und wenn eine gemacht wurde mittel "notifyObservers()" den ServerThread benachichtigen, damit dieser auf den entsprechenden Befehl reagieren kann. Der ServerThread wird natürlich auch als Observer eingetragen.
Hier mal schemahaft wie die Threads gestartet werden:
Bei Bedarf kann ich auch den kompletten Code posten. Durch Testausgaben stelle ich fest, dass der CommandThread gestartet wird, der ServerThread aber scheinbar nicht. Wenn ich Testeingaben mache werden die Observer auch benachichtigt, aber die update() Methode vom ServerThread nicht aufgerufen.
Also so wie ich mir das vorstelle müsste doch der CommandThread gestartet werden und auch unmittelbar danach auch der ServerThread oder nicht?
Ich hoffe hier kann mir jemand sagen wesshalb das so nicht funktioniert.
Da bei mir nächstes Semester ein Software-Projekt ansteht, versuche ich mich grade ein bisschen in Threads und das Model/Observer Prinzip einzuarbeiten. Mein Ziel ist im Moment folgendes:
- Es gibt eine Klasse "Init", die ein kleines Programm darstellt das..
- Einen "ServerThread" erzeugt und startet, der später einmal einen Port belegen soll, auf Clients horchen, was ein Server so macht...
- Der "ServerThread" startet im Kontruktor einen "CommandThread". Letzterer soll Konsoleneingaben vom Benutzer entgegen nehmen und wenn eine gemacht wurde mittel "notifyObservers()" den ServerThread benachichtigen, damit dieser auf den entsprechenden Befehl reagieren kann. Der ServerThread wird natürlich auch als Observer eingetragen.
Hier mal schemahaft wie die Threads gestartet werden:
Code:
package server;
public class Init {
public static void main(String[] args) {
ServerThread st = new ServerThread();
st.run();
}
}
public class ServerThread implements Runnable, Observer {
CommandThread cmdT;
ServerThread() {
cmdT = new CommandThread();
cmdT.addObserver(this);
cmdT.run();
}
run() {
// Blabla
}
update() {
}
}
public class CommandThread extends Observable implements Runnable () {
run() {
// Blabla
}
}
Bei Bedarf kann ich auch den kompletten Code posten. Durch Testausgaben stelle ich fest, dass der CommandThread gestartet wird, der ServerThread aber scheinbar nicht. Wenn ich Testeingaben mache werden die Observer auch benachichtigt, aber die update() Methode vom ServerThread nicht aufgerufen.
Also so wie ich mir das vorstelle müsste doch der CommandThread gestartet werden und auch unmittelbar danach auch der ServerThread oder nicht?
Ich hoffe hier kann mir jemand sagen wesshalb das so nicht funktioniert.