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

Java Discussion :

Thread et garbage collector.


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Par défaut Thread et garbage collector.
    Bonjour à tous.

    J'ai une classe qui lance un thread dans le constructeur, thread qui peut servir n'importe quand (et qui ne doit pas s'arrêter). L'objet qui a lancé le thread n'est donc jamais détruit et le thread ne s'arrête jamais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Toto {
    Toto() {
    new Thread() {
    run() { while(true);}
    }.start();
    }
     
    public static void main() {
    Toto t = new Toto();
    t = null;
    }
    }
    J'aimerais que le thread s'arrête quand on n'utilise plus l'objet. Une solution est d'ajouter une méthode stopThread() mais est-ce qu'il y a un moyen de savoir que l'objet n'a plus de référence vers lui, pour arrêter le thread automatiquement ?
    Je ne sais pas si j'ai été clair.
    Merci pour vos réponses

  2. #2
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Bonjour,

    Je pense qu'il faudrait que tu regardes du côté de la méthode finalize(). Tu la redéfinit. Regarde de ce coté pour la libération du thread : http://java.developpez.com/faq/java/...HREAD_terminer

    Cdlt.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Par défaut
    Citation Envoyé par binouzzz19 Voir le message
    Bonjour,

    Je pense qu'il faudrait que tu regardes du côté de la méthode finalize(). Tu la redéfinit. Regarde de ce coté pour la libération du thread : http://java.developpez.com/faq/java/...HREAD_terminer

    Cdlt.
    Salut.
    merci pour ta réponse mais tu ne m'as pas bien compris :
    La méthode finalize() de Toto n'est jamais appelée puisque le Thread est lancé et qu'il a une référence vers l'objet t qu'il faudrait détruire.
    Donc il faudrait que le thread sache qu'il n'existe aucune autre référence sur t que la sienne.
    Ou un autre moyen qui arrive au même résultat (thread arrêté) me conviendrait aussi.

  4. #4
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Salut,

    Quand je te parlais de finalize(), c'était pour l'objet t (instance de Toto). Si ton objet t n'est pas "détruit" manuellement, il va continuer à tourner tout le temps, du coup, ton thread aussi. Si tu veux arrêter ton thread lorsque 't' n'existe plus c'est que tu a fermé 't' manuellement. De ce fait, tu peux redéfinir cette méthode pour ton besoin.

    Cordialement.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Par défaut
    Citation Envoyé par binouzzz19 Voir le message
    Si ton objet t n'est pas "détruit" manuellement, il va continuer à tourner tout le temps, du coup, ton thread aussi. Si tu veux arrêter ton thread lorsque 't' n'existe plus c'est que tu a fermé 't' manuellement.
    ok, mais on ne peut pas détruire d'objet manuellement.
    Donc je dois arrêter le thread manuellement. Or je voudrais savoir comment arrêter le thread automatiquement (en détectant qu'il n'y a plus de référence vers t).
    Merci

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je ne comprend pas l'intérêt de ton thread ? Que veux-tu faire avec précisément ?

    a++

  7. #7
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Comment veux-tu qu'il n'y ait pas de référence à t ?

    Désolé je n'arrive pas à comprendre. C'est peut-être au dessus de mes compétences ?!

    http://philippe.prados.name/Langage/...e/finalize.pdf

    Cdlt.

Discussions similaires

  1. [JVM] Java 5 et Garbage Collector(Parralèle)
    Par ssaunois dans le forum Général Java
    Réponses: 6
    Dernier message: 28/11/2005, 23h42
  2. [JVM]Garbage collector
    Par godik dans le forum Général Java
    Réponses: 5
    Dernier message: 07/10/2005, 09h12
  3. JPanel et Garbage Collector
    Par tck-lt dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 25/07/2005, 18h03
  4. [JVM] les objets et le Garbage collector
    Par Kurdran dans le forum Général Java
    Réponses: 7
    Dernier message: 02/06/2005, 16h57
  5. [Language]Garbage collector
    Par GETah dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2005, 15h18

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