我一直在学习线程,是的……我是个菜鸟。我有一个问题,我不知道如何停止线程,因为方法 .spot() 已被弃用。我想知道如何安全地停止线程。我这样做了:
public class Principal{
private boolean bo1;
private Thread tr1;
public Principal(){
bo1 = true;
tr1 = new Thread(){
public void run(){
while(bo1){
//What the Thread does goes here, its a chronometer.
}
}
}; // The thread body stops here.
} // The constructor body stops here.
public void changeBo1(){
if(bo1 == true){
bo1 = false;
}
else{
bo1 = true;
}
} //Change bo1 ends here.
} //Class ends here.
所以我正在为自己制作一个迷你游戏,我的方法的主体是一个计时器,它告诉我我要花多长时间来解决这个难题。交易是,当我开始一个新游戏时,我调用重置秒、分钟和小时值的方法以及 changeBo1() 以便时钟停止。然后当我第一次点击屏幕时,时钟开始。然后,当我改变游戏时。但是线程没有读取布尔值的变化,它重新启动到 0:00:00,并且没有我点击屏幕,继续到 0:00:01---(这不会发生在第一个游戏,因为变量是需要的变量,所以当我点击“新游戏”时会发生这种情况,当变量需要改变时)。
我如何需要允许线程读取布尔 bo1 的变化?