Après le démarrage d'un thread comment pourrions-nous garder la fonction d'exécution en cours d'exécution? J'ai des tas d'idées, mais je ne suis pas sûr de ce qui est plus professionnel?

Dans un Thread Après l'appel de la start() comme vous le savez, il va appeler le run() fonction dans le Runnable classe. Dans le run() fonction je veux le fil reste aussi longtemps qu'il reçoit le "au Revoir" message de la part du client. Si je les ai mis dans la boucle while, il prend des tas de mémoire, je pense, et je ne suis pas en utilisant la puissance de fil. Par la façon dont je ne veux pas que mon fils dormir dans la fonction d'exécution en appelant Thread.sleep(6000); Est-il un autre moyen de rester là, dans la fonction d'exécution?

  1. Si la réponse est de rejoindre où et comment l'utiliser? Dois-je de la pop au début de la course de la fonction et il y reste jusqu'à ce que j'envoie le "au Revoir" de la client?
  2. Devrais-je dire while((request=in.readLine())!=null){? Il n'a pas de travail parce que je pense qu'il va perdre la connexion avec le client ou pour mieux dire, client de perdre la connexion?
  3. Devrais-je dire while(Thread.isAlive) et ensuite de tuer la menace lorsque je reçois le "au Revoir" en appelant Thread.stop qui est un peu dangereux?

Voici mon code simplifié:

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()));
.
.
..
...
}
Je suis vraiment perdu quant à ce problème que vous essayez de résoudre ici. Je voudrais commencer par la solution la plus simple possible et ne pas essayer de résoudre des problèmes qui ne pourrait jamais arriver à démarrer avec.
Peut-être que ma question n'est pas claire. J'essaie de rester int la fonction run. c'est ensemble.
qu'est-ce que vous empêche de rester dans la méthode run ()? par exemple, à l'aide de la boucle while que vous avez suggéré.
Je n'ai pas voulu utiliser tout parce qu'il passe par tous les codes dans la course de la fonction et c'est une sorte de boucle. Je suis à la recherche de quelque chose par exemple dans ServerSocket, nous avons une fonction appelée la demande() qui est en attente d'un appel à partir du serveur!
Si vous voulez avoir un écouteur d'événements comme quand une nouvelle ligne peut être lu? Vous pouvez écrire un si vous le souhaitez.

OriginalL'auteur Bernard | 2012-10-17