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] Probl�me isInterrupted() [FAQ]


Sujet :

Java

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Par d�faut [THREAD] Probl�me isInterrupted()
    Bonjour � tous!
    J'ai encore un petit souci (pour changer...!) Mais cette fois-ci avec un thread!
    Mon programme lance une interface graphique (Jframe) avec 2 Jbuton :
    un bouton start pour lancer un thread et un bouton stop pour l'arr�ter.
    Lorsque l'on clique une premi�re fois sur start le thread se lance bien, mais une fois arr�t�, il est impossible de relancer le thread une deuxi�me fois!
    Voici mon 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public class maFenetre extends JFrame implements ActionListener{
    	...
    	Thread1 p = new Thread1();
    	JPanel container = new JPanel();
    	JButton start = new JButton("Start");
    	JButton stop = new JButton("Stop");
    	...
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource() == start){
    			System.out.println("Etat du thread p : \nStoppé :"+p.isInterrupted()+"\nVivant :"+p.isAlive());
    			if(p.isAlive()==false){
                                    System.out.println("on lance le thread");
    				p.start();
    			}
    		}
    		else if(e.getSource() == stop){
                            p.interrupt();
    		}
    	}
    	...
     
     
    public class Thread1 extends Thread{
    	...
    	public void run(){
    		while(Thread.currentThread().isInterrupted()==false){
    			...
    			try {
            			Thread.sleep(10000);
          		}
          		catch (InterruptedException ex) {
          				System.out.println("Interruption attrapé\nEtat du thread: "+Thread.currentThread().isInterrupted());
          				Thread.currentThread().interrupt();
          				System.out.println("Retest de l'etat du thread: "+Thread.currentThread().isInterrupted());								
    			}
    		}
    	}
    }
    Pourtant juste avant la deuxi�me relance quand je test l'etat du thread,
    p.isAlive() et p.isInterrupted() me retourne false! Le thread ne veut vraiment pas se relancer!!!!! Je ne vois pas ce qui cloche...

  2. #2
    R�dacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par d�faut
    salut,

    tu ne peux pas re_start un Thread, la m�thode start ne peux etre appel� qu'une seule fois pour un thread..

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Par d�faut
    Ah! Je ne savais pas �a... Ouai donc c'est comme utiliser Thread.stop() sauf qu'elle n'est pas deprecated.
    J'ai essay� avec Thread.suspend() et Thread.resume() �a marche pas trop mal m�me si elles sont aussi deprecated.

  4. #4
    R�dacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par d�faut
    tu peux expliquer ce que tu veux faire??

    ya la m�thode destroy() // qui supprime le thread mais elle n'est pas propre..

    Sinon si tu veux executer un traitement; qu'un Thread n'a pas fait..il faut faire

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Par d�faut
    En fait c'est un programme qui lit des donn�es sur le port s�rie. Je veux lire sur le port s�rie quand j'appuis sur le Jbuton start et apr�s d�s que je ne veux plus lire j'appuis sur le Jbuton stop.
    J'avais d�ja essay� destroy() mais �a n'a pas march�.
    Si je fait new Thread().start() mais du thread qu'a deja tourn� ca va pas march� alors?
    Sinon avec Thread.suspend et Thread.resume() �a marche. Il faut juste que je m'arrange pour fermer le port s�rie a chaque fois que je fais un suspend() et a l'ouvrir quand je fais un resume() sinon �a fait couiller mon appli!!!!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [THREAD] Probl�me synchronisation
    Par goddet dans le forum D�buter avec Java
    R�ponses: 3
    Dernier message: 25/10/2006, 09h16
  2. [VB.Net][Threading] Probl�me de parent ...
    Par maitrebn dans le forum Windows Forms
    R�ponses: 3
    Dernier message: 03/01/2006, 11h05
  3. Thread probl�me pour l'arreter
    Par rvzip64 dans le forum Langage
    R�ponses: 8
    Dernier message: 12/07/2005, 10h51
  4. [Thread]Probl�me de processus
    Par berg dans le forum Concurrence et multi-thread
    R�ponses: 5
    Dernier message: 18/06/2005, 20h40
  5. Thread--> probl�me avec ThreadProc
    Par stof dans le forum MFC
    R�ponses: 33
    Dernier message: 08/06/2005, 13h47

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