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

avec Java Discussion :

Exception ds thread


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 26
    Points
    26
    Par défaut Exception ds thread
    salut,
    j'ai essayé le code existant ds ce lienhttp://java.developpez.com/faq/java/...angage_threads
    pour arreter mon thread,
    mais il n'accept pas catch (InterruptedException e)(cette InterruptedException sera souligné en rouge), il ne s'arrete pas
    aide moi svp.
    merci d'avance

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 502
    Points
    15 502
    Par défaut
    Il y a plusieurs codes dans la page de ton lien. Ca serait bein que tu présice de quel code il s'agit ou mieux, que tu le postes dans le sujet entre des balises [code ] et [/code ]

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    salut
    j'ai utilisé le 1eme code
    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
    private boolean stopThread = false;
     
    public void run() {
            boolean fin = false;
     
            while( !fin ) {
                    try {
                            // traitement
     
                            synchronized(this) {
                                    Thead.yield();
     
                                    // lecture du boolean 
                                    fin = this.stopThread;
                            } 
                    } catch( InterruptedException e ) {// InterruptedException e  est souligné en rouge 
     
                    } 
            } 
    } 
     
    public synchronized void stop() {
            this.stopThread = true;
    }

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 502
    Points
    15 502
    Par défaut
    Il faudrait peut-être faudrait il déclarer la variable stopThread en volatile vu qu'elle peut être modifiée de manière imprévue par un autre thread.

    Ceci dit je pense que le squelette suivant serait plus simple et efficace que celui proposé dans la FAQ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public void run() {
            while( !this.isInterrupted() ) {
                    try {
                            // traitement
     
                    } catch( InterruptedException e ) {
     
                    } 
            } 
    } 
     
    public synchronized void stop() {
            this.interrupt();
    }
    Plutôt que d'utiliser une variable de la classe, cela utilise l'état d'interuption du thread, ce qui a l'avantage d'interrompre les fonction java bloquantes qui gèrent l'interruption de thread.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en réalité faut utiliser les deux: certaines fonctione java bloquante, non seulement s'arretent lors du interrupt, mais nettoient aussi le flag, ce qui fait que ton thread sais pas sans une variable supplémentaire qu'on lui a demandé de s'arrêté.

    Pour l'exception soulignée en rouge, t'aurais pas oublié l'import par hasard?

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/05/2006, 19h32
  2. [JDIC]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Par kedare dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 06/05/2006, 22h45
  3. [Classpath]Exception in thread "main" NoClassDefFound
    Par let_me_in dans le forum Général Java
    Réponses: 24
    Dernier message: 24/01/2006, 20h28
  4. Exception in thread "main" java.lang.ArrayIndexOut
    Par Poseidon62 dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 04/11/2005, 01h38
  5. Réponses: 5
    Dernier message: 12/06/2002, 15h12

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