public class ThreadStateVerifier {
public static void main(String[] args) {
// TODO Auto-generated method stub
VerifyThread t = new VerifyThread() ;
Thread th = new Thread(t) ;
th.start() ;
for(int i = 0 ; i < 5 ; i++){
if(i == 4)
{
t.setactive(false) ;
}
}
}
}
class VerifyThread implements Runnable{
private String message = "It is working" ;
private volatile boolean active = true ;
private static int i = 0 ;
public void run(){
try{
for(; active ; i++){
System.out.println("i is" + i);
Thread.sleep(1000) ;
}
}
catch(InterruptedException ie){}
}
public static void setactive(boolean active){
active = active ;
}
}
Je veux définir la valeur de active
-false
, lorsque le fil est en fait en cours d'exécution.Définition des attributs d'un fil conducteur
Quand je lance ce programme, VerifyThread
va dans une boucle infinie, à savoir active
n'est pas réglé à false
, bien que sa valeur est définie sur false
par main
explicitement.
Si mon approche est incorrecte, veuillez suggérer la bonne approche pour le faire. L'objectif est que la valeur active
doit être définie sur false
, de sorte que le VerifyThread
s'arrête ultérieurement.
Je ne veux utiliser aucune file d'attente intermédiaire qui stocke la valeur de l'actif car il s'agira d'un surcoût en mémoire.
et supprimer statique –
@Tim Büthe: à droite, j'ai raté cela. – Tudor
mon premier poste à stackoverflow, et je suis vraiment étonné de voir l'aide rapide de vous les gars. Apprécier. –