Java threads

Résolu
thiernoirm Messages postés 12 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 17 septembre 2009 - 16 sept. 2009 à 12:19
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 - 17 sept. 2009 à 20:50
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

3 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
17 sept. 2009 à 02:42
Si le thread appelle fréquemment des méthodes qui jettent InterruptedException, il retourne simplement de la méthode run après avoir reçu l'exception:
    try {
        Thread.sleep(4000);
    } catch (InterruptedException e) {
        //We've been interrupted: no more messages.
        return;
    }
Si un thread tourne longtemps sans appeler une méthode qui jette InterruptedException, alors il doit périodiquement appeler Thread.interrupted, qui retourne vrai si un interrupt a été reçu. Par exemple:

for (int i = 0; i < inputs.length; i++) {
    //...work
    if (Thread.interrupted()) {
        //We've been interrupted: no more work.
        return;
    }
}

Une autre façon d'arrèter un thread consiste à modifier une variable pour indiquer que le thread doit s'arrèter. Le thread doit interroger régulièrement cette variable, et retourner de la méthode run si la variable indique qu'il doit s'arrèter.
3
thiernoirm Messages postés 12 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 17 septembre 2009
17 sept. 2009 à 11:38
Merci
j'ai utulisé la 3eme méthode que tu as expliquée , c a d utiliser une variable boolean. Mais çà ne marche toujours pas .
voici la methode .

boolean arreterThread = true;
synchronized public void stoperThread(){
arreterThread = true;
while(arreterThread){
try{
if(monThread != null){
monThread.interrupt();
monThread = null;
}

} catch (Exception e) {
System.out.println(" Le Thread n'a pa été arreté "+e);
}
}
}
3
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
17 sept. 2009 à 20:50
Je pense que tu n'as pas saisie la troisième façon d'arrèter le thread: au lieu de sortir tout de suite de la méthode run, tu entre dans une nouvelle boucle...
0
Rejoignez-nous