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 :

[Thread] Stopper l'exécution d'un thread brutalement


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre averti Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Points : 306
    Points
    306
    Par défaut [Thread] Stopper l'exécution d'un thread brutalement
    Voilà, sur cet exemple simple, je voudrais stopper l'exécution d'un thread.

    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
     
    Thread t = new Thread(new Runnable()
    {
         public void run()
         {
              while(true)
                 System.out.println("coucou");
         }
    });
     
    t.start();
     
    try
    {
         Thread.sleep(5000L);
    }
    catch(InterruptedException e)
    {}
     
    // Je veux écrire une ligne de code ici stoppant lexécution mon objet t.
    Voilà, je pense que c'est clair comme question, on peut imaginer ça comme ça :un morceau de musique lancé sur thread séparé dont on a une référence, on peut faire stop pour l'arrêter.

    Comment faire? (le fait que faire stoper un thread brutalement comme ça n'est pas sécurisé n'est un problème dans l'exemple qui m'interesse, donc les grincheux ... )
    On a toujours besoin d'un plus bourrin que soi

    Oui il y a quelques bugs dans ma librairie de Sécurité, mais les classes postées ne sont pas celles de la dernière version, et j'ai la flemme de tout modifier. Je vous donnerai avec plaisir la dernière version du jar par mp.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    t.interrupt() ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre actif Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 239
    Points
    239
    Par défaut
    Salut,

    Pour utiliser t.interrupt(), il faut que la bouche de ton thread soit de la forme while(t.isInterrupted()). Par contre le seul moyen d'arrêter un thread brutalement c'est t.stop(), c'est certe déprecier mais c'est le seul que je connaissent qui arrête brutalement un thread.

    Hydraland

  4. #4
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Dans ton exemple, .interrupt() avec la boucle en isInterrupted() est "instantané"...

  5. #5
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Un article sur le sujet.
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  6. #6
    Membre averti Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Points : 306
    Points
    306
    Par défaut
    j'ai l'impression que la méthde stop ne fonctionne pas toujours... Sinon interrupt ça marche avec isInterrupted, mais sinonexiste-t-il un autre moyen?
    On a toujours besoin d'un plus bourrin que soi

    Oui il y a quelques bugs dans ma librairie de Sécurité, mais les classes postées ne sont pas celles de la dernière version, et j'ai la flemme de tout modifier. Je vous donnerai avec plaisir la dernière version du jar par mp.

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par Razgriz
    mais sinon existe-t-il un autre moyen?
    S'il y a d'autres moyens (non similaires), ils sont mauvais...

  8. #8
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Citation Envoyé par Razgriz
    j'ai l'impression que la méthde stop ne fonctionne pas toujours...
    C'est à dire ? Normalement la méthode stop() devrait bien arrêter le thread brutalement, mais ce n'est pas du tout conseillé car cela pourrait avoir des répercutions sur d'autres threads...


    Citation Envoyé par Razgriz
    Sinon interrupt ça marche avec isInterrupted,
    C'est surtout que interrupt() se "contente" de passer modifier le status "interrupted" du thread, et c'est ce dernier qui doit vérifier cet état et faire en conséquence...

    Mais cela reste la manière la plus propre pour stopper un thread, car ce dernier pourra se charger de se terminer correctement...

    Citation Envoyé par Razgriz
    mais sinonexiste-t-il un autre moyen?
    Il faudrait plutôt que tu te tournes vers l'API que tu utilises pour jouer ce morceau de musique. Cette API doit surement prévoir tout ce qu'il faut pour arrêter tout proprement...

    a++

Discussions similaires

  1. Stopper le programme avec un THREAD
    Par Mamat31 dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 13/06/2007, 10h48
  2. Exécution d'un Thread dans une méthode statique
    Par barbiche dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 03/05/2007, 14h25
  3. Affichage d'un JOptionPane au cours de l'exécution d'un Thread
    Par azad_892000 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 20/03/2007, 22h23
  4. Fermeture de thread/Stopper recvfrom
    Par homeostasie dans le forum Visual C++
    Réponses: 7
    Dernier message: 17/11/2006, 09h59
  5. [java.util.Timer]Comment arrêter l'exécution d'un Thread
    Par Invité dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 07/06/2006, 07h54

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