Bonsoir,

J'ai un souci avec un Thread qui veut pas se mettre en pause. J'ai suivi les indications des FAQs de ce site, mais je n'ai pas réussi à venir à bout du problème. Voici mon code, d'ailleur largement inspiré d'une FAQ:

Dans la classe Calcul, qui étend Thread:

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
public void run()
	{
	    int monInt=essai.getnombre();
	    essai.setNombre(monInt);
	    while(!fin)
	    {
	    	monInt++;
			essai.getLabel().setText("The Number is : "+monInt);
	        synchronized(this)
	        {
	        	Thread.yield();
	        	System.out.println(stopThread);
                fin=stopThread;
	         } 
	    }
	} 
 
	public synchronized void stopMyThread()
	{
	    this.stopThread=true;
	}
La classe essai présente une JFrame avec deux boutons, voici la méthode gérant les actions associées:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
public void actionPerformed(ActionEvent arg0)
	{
		Calcul calcul=new Calcul(this);
		if(arg0.getActionCommand().equals("Start"))
		{
			calcul.start();
		}
		if(arg0.getActionCommand().equals("Cancel"))
		{
			calcul.stopMyThread();
			System.out.println("la réponse est : "+calcul.isStopMyThread());
		}
	}
Le system.out.println renvoi "la réponse est true", donc le booléen stopThread est bien modifié lorsque j'appuie sur "Cancel", mais immédiatement après il repasse à false (le System.out.println dans la méthode run qui renvoie des false) et du coup, on reste dans la boucle while.

Quelqu'un aurait-il une idée à me proposer?
Je vous remercie dans tous les cas de vos réponses et vos conseils :-)