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 :

Méthodes THREAD dépréciées


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 97
    Par défaut Méthodes THREAD dépréciées
    Bonjour
    J'ai vu que les méthodes stop, suspend et resume étaient dépréciées, mais il n'y a pas a priori de remplacement.
    Comment puis-je suspendre, stopper ou reprendre, à partir d'une IHM, un thread fils si ce n'est en utilisant ces méthodes?

    merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    FAQ

  3. #3
    Membre confirmé Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Par défaut J'ai vu que les méthodes stop...
    tu peux ecrire un code qui realise le stop()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    private boolean stop = false;
     
    public void run() {
            boolean termine = false;
     
            while( !termine ) {
                    try {
                            // traitement de chaque thread
     
                            synchronized(this) {
                                    Thead.yield();
     
                                    // lecture du boolean 
                                    termine = this.stop;
                            } 
                    } catch( InterruptedException e ) {
     
                    } 
            } 
    } 
     
    public synchronized void stop() {
            this.stop = true;
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Par défaut
    Cette méthode fonctionne uniquement si le code de la méthode run() autorise un test régulier d'un boolean. On n'obtiendra jamais un arrêt instantanné de l'exécution du thread.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Citation Envoyé par fomazou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       ...
       // traitement de chaque thread                        
       synchronized(this)  {
         Thead.yield();                                
         // lecture du boolean 
         termine = this.stop;
       } 
       ...
    }
    Je n'avais pas vu la première fois, mais faire un Thread.yield() n'a pas beaucoup d'interet, surtout la ou il est place. Parce que si c'est pour donner une meilleur chance aux autres threads d'arreter celui-ci, c'est loupé, comme le monitor est déjà pris.
    Sinon, si c'est pour donner la main aux autres threads de temps et en temps, c'est également inutile. Il vaut mieux laisser la vm faire le boulot.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 97
    Par défaut
    J'ai regardé dans la faq.Bon pour le stop OK mais pour la pause. Je souhaiterais réellement le mettre en pause. Est-il envisageable d'utiliser un wait et de le réveiller de l'extérieur par un notify.
    Est-ce propre?

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Est-il envisageable d'utiliser un wait et de le réveiller de l'extérieur par un notify.
    Est-ce propre?
    Oui, c'est effectivement ce qu'il faut faire.

Discussions similaires

  1. [Débutant] La méthode Thread
    Par Mag007 dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 01/04/2007, 19h03
  2. [Thread] Invocation méthode pendant un certain temps
    Par the java lover dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 01/02/2006, 18h11
  3. [Thread]Faut-il boucler la méthode run ?
    Par Pill_S dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 17/06/2004, 22h53
  4. thread et méthodes static
    Par sylpichard dans le forum MFC
    Réponses: 3
    Dernier message: 02/06/2004, 17h12
  5. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35

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