Nach dem starten eines thread wie könnten wir halten der run-Funktion läuft? Ich habe paar Ideen, aber ich bin mir nicht sicher, was ist professioneller?

In einem Thread Nach dem Aufruf der start() wie Sie wissen, es wird rufen der run() Funktion in der Runnable Klasse. In der run() Funktion will ich der thread bleibt solange erhalten die "Bye" - Nachricht vom client. Wenn ich setzen Sie Sie in die while-Schleife dauert es haufenweise Speicher und ich denke, ich bin nicht mit der macht der thread. Übrigens ich will nicht, dass mein thread schlafen in der run-Funktion, durch den Aufruf Thread.sleep(6000); gibt es eine andere Möglichkeit zu übernachten gibt es in der run-Funktion?

  1. Wenn die Antwort beizutreten, wo und wie und verwenden Sie es? Sollte ich pop es zu Beginn der run-Funktion, und es bleibt dort, bis ich das "Tschüss" vom client?

  2. Soll ich sagen while((request=in.readLine())!=null){? Es hat nicht funktioniert, weil ich denke, es wird verlieren Sie die Verbindung mit dem client-oder besser gesagt-client verliert die Verbindung?

  3. Soll ich sagen while(Thread.isAlive) und dann töten die Bedrohung, wenn ich die Meldung "Bye" durch den Aufruf Thread.stop ist wenig gefährlich?

Hier mein vereinfachter code:

while(true)
        {   
            ClientWorker w;
            try
            {                   
                w = new ClientWorker(serverSocket.accept());
                    Thread t = new Thread(w);
                    t.start();
                }
......  }

    class ClientWorker implements Runnable {
        public ClientWorker(Socket incoming)
        {
            myList = my;
            this.incoming = incoming;
        }
    public synchronized  void run()
    {
         in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
.
.
..
...
}
  • Ich bin wirklich verloren, was problem, das Sie versuchen zu lösen, hier. Ich würde beginnen mit der einfachsten Lösung möglich und nicht versuchen, Probleme zu lösen, die möglicherweise nie passieren, mit zu beginnen.
  • Kann sein, meine Frage ist nicht klar. Ich versuche zu bleiben int die Funktion run. das ist gesetzt.
  • was hindert Sie bleiben in der run () - Methode? z.B. mit der while-Schleife, die Sie vorgeschlagen.
  • Ich wollte nicht zu verwenden, während da geht es durch alle codes in der run-Funktion und es ist eine Art Schleife. Ich bin auf der Suche nach etwas, zum Beispiel in der ServerSocket-wir haben eine Funktion namens request() darauf wartet, dass ein Anruf von dem server!!!
  • Du willst also einen listener für Ereignisse wie, wenn eine neue Zeile gelesen werden kann? Sie können schreiben, wenn Sie möchten.
InformationsquelleAutor Bernard | 2012-10-17
Schreibe einen Kommentar