Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1537 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  fermeture thread java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fermeture thread java

n°1924201
thiernoirm
Posté le 15-09-2009 à 12:25:26  profilanswer
 

salut  
j'ai un problème  pour arreter mes threads .  pouvez vous m'aider ? svp
 voici mon thread :  
 
           public class monThread extends Thread{
 
 public void run (){
 try{
   for(int i= 0; i<uneValeur; i++){
   monTraitement();
  Thread.sleep(3000);
 }
 }catch( InterruptedException  e) {
 System.out.println ("problem" +e}
 }
 }
 
voici la methode pour lancer le thread.
 
    public void  demarrerThread(){
   monThread  T1 = new  monThread();
   T1.start();
 }
 
voici  la methode pour arreter  le thread ( NE MARCHE  PAS ).
 
poublic void stoperThread(){
 monThread  T1 = new  monThread();
   try{
   if (T1.isAlive()){
                   deconnecteServeur();  //  methode pour se deconnecter du serveur
                                                  // au fait il s'agit d'une  com  CLIENT -SERVEUR
       T1.Interrupt();
       T1 = null;
       }
 }catch(Exception  e){
   
   }
 
 }
MERCI

mood
Publicité
Posté le 15-09-2009 à 12:25:26  profilanswer
 

n°1924203
pataluc
Posté le 15-09-2009 à 13:10:55  profilanswer
 

(utilise les balises [code=java][ /code] http://forum-images.hardware.fr/icones/message/c.gif stp, ca sera plus lisible...)
 
 
 
revoie tes concepts de POO, la tu instancie un nouveau thread à arrêter, tu récupére pas celui qui tourne...
 
 
 
en plus (semi hs), ya pas un débat qui dit qu'il vaut mieux passer par l'interface Runnable pour faire des threads?
 
 

n°1924366
cbeyls
Hail to the King, Baby
Posté le 15-09-2009 à 23:30:13  profilanswer
 

Tu dois garder la référence à T1 que tu assignes dans demarrerThread().
 
Ensuite tu appelles T1.interrupt() sur ce même T1 afin de sortir le thread de l'appel à sleep() en levant une InterruptedException.

n°1924830
thiernoirm
Posté le 17-09-2009 à 15:45:29  profilanswer
 

J'ai suivi les conseilset j'ai essayé com çà ,  mais il n'arrete toujours pas les threads.  
 
 
 public class myThread implements Runnable{
 
 private  Thread  T1;  
 
public void Start ( ) {
 myThread = new Thread( this );
  myThread.start();
 }  
public void run(){
 try{
 for (int i=0; i<someThing; i++){
 traitement();
 Thread.sleep(1000);
}//end for
catch(InterruptedException e){}
}//end try
}//end run
 
 
boolean finish = true;
 synchronise public void stopThread(){
  finish = true;
  while(finish){
    if (T1.isAlive()){
       T1.interrupt();
       T1 = null;      
}
}
 
}
}  

n°1924848
pataluc
Posté le 17-09-2009 à 16:19:35  profilanswer
 

t'initialise pas T1 la... revois tes bases:
http://alwin.developpez.com/tutorial/JavaThread/

 


EDIT: et utilise les balise code quand tu postes stp... ca sera plus lisible.


Message édité par pataluc le 17-09-2009 à 16:22:35
n°1924889
cbeyls
Hail to the King, Baby
Posté le 17-09-2009 à 17:44:31  profilanswer
 

C'est à peine lisible... Je ne comprend rien à ce que tu essayes de faire dans ton code mais je peux te dire que quand tu appelles stopThread() tu vas lever une belle NullPointerException. Dans la boucle de ton run() tu dois également ajouter la condition:
 
&& !Thread.interrupted()
 
pour tester si un appel à l'interruption a été fait par le thread principal et ainsi sortir de la boucle si c'est le cas pour que ton Thread puisse se terminer proprement.
 
Après avoir appelé t1.interrupt(), ton thread continue à fonctionner pendant quelques instants, c'est normal, pas la peine d'appeler t1.interrupt() en boucle. Pour que ton thread principal attende que le thread t1 s'arrête, tu dois appeler t1.join().
 
Si tu n'as pas encore compris je te conseille de te documenter un peu sur les threads via un bon bouquin.


Message édité par cbeyls le 17-09-2009 à 17:47:50

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  fermeture thread java

 

Sujets relatifs
string javaLaisser tourner un thread en fin de session
Uploader un fichier en javaConnexion a un Wifi en Java ?
Exécuter du code java quand je clique sur le bouton HTMLverification code chargement java appelant un fichier prolog via jpl
Probleme de code java /LDAPprobleme thread linux (pthread)
implémenter et créer un arbre en java[JAVA] Mise en œuvre de flux de sortie
Plus de sujets relatifs à : fermeture thread java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR