Tuer et mettre en pause un Thread

Signaler
Messages postés
23
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
27 juillet 2007
-
Messages postés
5350
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
29 juin 2020
-
Bonjour tous !

J'ai un Thread qui se nomme discussion, dans le Run() celui-ci execute une serie d'apel a différente méthode...j'ai besoin de tuer ce Thread grace a un bouton "Stopper la discussion", mais mon probleme est que je ne sais pas comment faire, en effet il n'y a pas de "kill" et destroy et depreciated....donc comment faire ?
J'ai pensé a mettre une variable booleenne mais elle ne permet pas de stopper le programme a tout moment, il faut attendre qu'il boucle...

Deuxieme question, pour le mettre en attente grace a un bouton "mettre discussion en attente" je fais un sleep qui boucle...est ce "propre" ou serait il plus intéréssant de faire un Wait/Notify....? si oui comment fait on ?

merci beaucoup

3 réponses

Messages postés
5350
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
29 juin 2020
97
Salut,

en fait le problème est assez simple :

1 )
class MyThread extends Thread {
    private long        delay  = 30;
    private boolean  pause = false;    // pour les pauses
    private boolean  end     = false;    // termine le thread

    ......
    public void run() {
        try {
            while (!end) {
                sleep(speed);
                if (!pause) {
                    //traitement ici
                }
            }
        } catch (Exception e) {
            e.printStackTrace(err);
        }
    }
    ......
    public void end() { this.end = true; }
    public void pause() { this.pause = true; }
    public void setPause(boolean pause) { this.pause = pause; }
    public void setSpeed(long speed) { this.speed = speed; }
    ......
}
   
2 ) Cela dépend des cas et surtout des besoins (mais j'ai une préférence pour wait/notify) pour le comment fait on il existe des tonnes d'exemples dessus (même en FR).

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
23
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
27 juillet 2007

a quoi correspond ton speed ?

Mon programme conciste en un echange entre l'utilisateur et l'ordinateur, je me demande si un systeme de client/serveur (avec pipe pour envoi et reception de donnée, donc bonne synchronisation) serait plus utilie que mon systeme de thread de discussion...qu'en penses tu ?

merci
Messages postés
5350
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
29 juin 2020
97
Salut,

le speed sert juste pour mettre une tempo au thread parce que si tu met en pause il n'y a plus rien pour le ralentir donc ça revient à faire un vilain while(true) ; et donc le faire tourner comme un dingue pour rien.

Concernant la structure du prog les deux sont viables et les deux vont demander au minimum un thread chacun afin de ne pas pourrir la vie au thread détaché par la JVM pour maintenir en vie ton application.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA