IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

[Threads] Comment terminer un thread ? [FAQ]


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre éclairé Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Par défaut [Threads] Comment terminer un thread ?
    Bonjour !

    Je suis actuellement en train de développer une application client/serveur, et j'ai un problème. Le serveur écoute sur un port et crée un socket à chaque nouvelle demande de connexion. Ce socket est ensuite passé à un thread qui fait tout un traitement dessus.

    Le problème, c'est que j'aimerais bien savoir ce qui se passe une fois la fin de la méthode run() des thread atteinte. Vu que mes threads sont lancés par le serveur dans cette boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          while (listen) {
              Socket sock = welcomeSocket.accept();
              Connexion c = new Connexion(sock);
              c.start();
            }
    ne vais-je pas me retrouver après un certain temps avec plein de threads dont l'exécution est terminée mais qui sont toujours en attente ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Un thread qui sort de la méthode run est un thread mort !
    Il n'attend plus rien du tout.
    Par contre, si tu maintiens une référence dessus, il occuperas encore de la mémoire.

  3. #3
    Membre éclairé Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Par défaut
    Ok...

    Donc typiquement dans mon code en dessus, vu que j'utilise toujours la même variable pour tous mes threads, et qu'en plus elle est locale à la boucle while, ils se termineront dès la fin de leur méthode run() et seront supprimés ?

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    typiquement, oui.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    Dans ce cas fais directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (listen) { 
              Socket sock = welcomeSocket.accept(); 
              new Connexion(sock); 
            }
    Et dans le constructeur de Connexion, à la fin, tu mets :

  6. #6
    Membre éclairé Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Par défaut
    Ok, merci...

    C'est vrai que la variable c n'était pas nécessaire ! Merci à tous pour vos réponses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment attendre un thread qu'il se termine?
    Par badreddine540 dans le forum Général Java
    Réponses: 1
    Dernier message: 15/10/2010, 12h29
  2. Comment "dire" aux threads de se terminer
    Par iza76 dans le forum POSIX
    Réponses: 5
    Dernier message: 12/03/2008, 10h21
  3. [Thread]comment savoir qu'un thread est terminé
    Par david06600 dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 01/12/2006, 18h39
  4. [Thread]Comment créer plusieurs thread à la demande??
    Par Devil666 dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 14/09/2005, 13h29
  5. [Thread] comment arreter un thread qui execute une methode b
    Par Cyber@l dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 04/08/2004, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo