|
|
|
CPU Last vs. einfaches Verbindungsende
|
Hi ihr alle!
Ich beschäftige mich seit einiger Zeit mit Java, jedoch erst seit kurzem Intensiv genug um halbwegs Ahnung zu haben
Die allgemeinen Programmiergrundlagen etc. sind vorhanden.
Mein Problem liegt mehr im Speziellen:
Ich hab einen kleinen Chat Server geschrieben (nur so um in Threads etc. reinzukommen). Dieser ist mittlerweile ein Stückchen gewachsen und bietet nun auch erweiterte Funktionen. Unter anderem die, dass ich in der Konsole den Server mit einem einfachen Befehl beenden kann.
Soweit zur allgemeinen Beschreibung.
Wenn ich den Server jetzt so beenden will, muss ich natürlich sämtliche Threads beenden bzw. deren Verbindung zu den Clients trennen. Soweit gar kein Problem. (Es funktioniert erstaunlich besser als erwartet )
Was jetzt aber passiert:
Wenn ich im Thread in einer - unter bestimmten Vorraussetzungen terminierenden - Schleife mit
|
PHP: |
if (myBufferedReader.ready())
{
}
|
|
Abfrage, ob eine Client Nachricht vorliegt oder nicht, dann wird die Verbindung ohne weiteres zu dem Zeitpunkt getrennt, wo ich den Befehl in der Konsole abgeschickt habe.
Der Nachteil: Die CPU Last schon bei nur einem Client liegt bei fast 100% (sagt zumindest der Task Manager)!
Wenn ich es weglasse, stehe ich vor einem anderen Problem:
Die Verbindung zum Client wird erst dann getrennt, wenn der Client noch eine Nachricht schickt (das gilt für jeden Client!). Eher ist kein Verbindungsende möglich (warum auch immer). Der Server beendet sich auch erst, wenn alle Clients eine Nachricht geschickt haben.
Von der Funktion her hätte ich es am liebsten so, wie es mit der Abfrage läuft, nur am liebsten ohne diese doch enorme CPU Last.
Mit einem wait() hab ich es auch schon probiert.
Bin für jede Hilfe dankbar!
mfg morgan
PS: wenn mehr Code gewünscht wird bitte Bescheid sagen!
|
|
|
|
|
|
|
Hat keiner eine Idee?
Oder fehlt euch zur Analyse des Problems noch mehr Source?
Wär echt super, wenn mir wer helfen könnte!
mfg morgan
|
|
|
|
|
|
|
zeig mal source.. schaden kanns nicht.
|
|
|
|
|
|
|
|
|
|
Thema: [JAVA] Client - Server Problem ( CPU Last vs. einfaches Verbindungsende ) |