我有一个名为Flash
的课程,其中定义了Runnable
。
class Flash
{
Runnable slow = new Runnable(){
public void run(){
//Do stuff here
}
}
};
Thread slowThread = null; //Just declared a Thread variable
//more stuff here
}
现在我有一个名为blinkslow()
的方法,它使用slow
runnable创建一个新的线程类对象:
void blinkSlow()
{
if(!threadRunning) //Boolean to make sure the thread is not running(works fine)
{
slowThread=null;
slowThread = new Thread(slow);
slowThread.start();
threadRunning = true;
}
}
现在,当run()
方法完成其作业时,在其最后一个语句中,它将此布尔标志threadRunning
设置为false,然后退出。
然后当我第二次调用方法blinkslow()
时,线程不会运行。为什么会这样?
我已经确定了:
run()
方法之前完成其blinkshow()
方法。slowThread = new Thread(slow);
每次调用时都会使用Runnable创建一个Thread类的新实例。如何在第一次结束执行后再次创建runnable的另一个实例?我上面做的第二次没有工作,我不知道为什么。
答案 0 :(得分:0)
我只知道自己做错了什么,现在我觉得很傻。我在run方法中有另一个标志stop
(一个布尔变量)。第一次跑步后我忘了取消它。
上述代码运行正常,没有任何问题,除非你是我。
答案 1 :(得分:-2)
当一个线程被finhed时,他进入“死”状态,并且它不能再被使用了。 要使用run方法,需要创建新的线程对象实例。