Tuer et mettre en pause un Thread

Abasedebasse Messages postés 23 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 27 juillet 2007 - 11 avril 2007 à 10:46
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 11 avril 2007 à 13:24
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
A voir également:

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
11 avril 2007 à 11:14
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
0
Abasedebasse Messages postés 23 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 27 juillet 2007
11 avril 2007 à 12:19
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
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
11 avril 2007 à 13:24
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
0
Rejoignez-nous