Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fermer ses Thread en java.

    16 juillet 2011 à 18:17:34

    Bonjour,
    avec un titre pareil, je suis sûr que pas mal d'entre vous m'aurais redirigé par là, seulement, c’est justement de là que je viens ... :p
    bon, passons aux choses sérieuse.
    Voilà le bout de tuto qui me chiffonne ...

    Citation : tuto

    Nous obtenons finalement le code suivant :

    class MonThread extends Thread {
        protected volatile boolean running = true;
        public Monthread () {
            // Mon constructeur
        }
    
        public arret() { // Méthode 2
            running = false;
        }
    
        @Override
        public void run() {
            // Initialisation
            while(running) { // Boucle infinie pour effectuer des traitements.
                // Traitement à faire
                if (/*Condition d'arret*/) // Méthode 1
                    running = false;
            }
        }
    }
    




    Mais voilà, en fait, cette astuce, ça fait juste terminé le code.
    Mais alors, qu'entends-t-on par "fermer un thread" ? Le terminé ?
    Pour moi, le code précédent ne ferme pas le Thread, il termine juste sont exécution.

    Voilà un exemple concret :

    Dans mon projet, quand une exception critique est levé, j'envoie quelquefois un mail de rapport d'erreur, pour que je sois averti des bugs.
    Seulement, l'envoie d'un mail, c'est un peu long.
    Aussi, l'envoie de ce mail, je l'effectue dans un nouveau Thread, pour ne pas géner l'exécution du programme.
    Bon, tout marche impec, seulement, j'ai remarqué que le "Threade reste ouvert".
    Je m'explique : pour tester, j'ai envoyé plusieurs mail dans des Thread différent. Bon, bien, seulement, après ça, il y avait 25 Thread ouvert ... Je peu le savoir grâce à Logj4 qui précise dans quel Thread on se trouve ...

    Alors voilà mes questions :

    Que veux-t-on dire par "fermer un Thread" ?
    Est-il gênant, pour les performances surtout d'avoir plein de Thread ouverts (et inutiles).
    Comment "fermer définitivement un thread" ? (vous me comprenez je crois ;) )

    Merci d’avance.
    un modérateur pouvait passer par là ...
    • Partager sur Facebook
    • Partager sur Twitter
      16 juillet 2011 à 22:03:34

      Plop,

      Utilise un pool de threads. Tu peux ainsi donner une durée de vie à tes threads dans le pool, et récupérer ceux que tu as utilisé et qui sont en sleep. Va voir le package java.util.concurrent, le ThreadExecutorFactory et ExecutorService.
      • Partager sur Facebook
      • Partager sur Twitter
        19 juillet 2011 à 10:14:52

        Merci beaucoup, je me suis documenter, j'ai eu la veine de tomber comme par hasard sur ce tuto (je l'ai vu par hasard dans la rubrique des nouveaux tutoriels).

        je laisse ouvert au cas ou j'aurais des problèmes.
        Merci.
        • Partager sur Facebook
        • Partager sur Twitter

        Fermer ses Thread en java.

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown