我想知道如何在循环中第一次启动线程:
例子:
while(something)
{
/*
...
Some codes
...
*/
thread.start();
}
问题是我收到此错误:
java.lang.IllegalThreadStateException: Thread already started.
..因为它每次都在循环中重新启动线程...
如何在循环中仅启动线程 1 次?
我想知道如何在循环中第一次启动线程:
例子:
while(something)
{
/*
...
Some codes
...
*/
thread.start();
}
问题是我收到此错误:
java.lang.IllegalThreadStateException: Thread already started.
..因为它每次都在循环中重新启动线程...
如何在循环中仅启动线程 1 次?
设置一个布尔值以告诉您何时设置该值以便设置一次。我不知道为什么你不能将它设置在循环之外,但如果我理解正确的话,这样的事情应该可以工作。
boolean started = false;
while(something){
if(!started){
thread.start();
started = true;
}
}
您可以通过以下方式检查线程的状态getState()
while(something){
/* ... */
if (thread.getState() == Thread.State.NEW) {
thread.start();
}
}
这个怎么样?
while(something)
{
/*
...
Some codes
...
*/
if (!thread.isAlive()) {
thread.start();
}
}
其中一种方法可能是使用该isAlive()
方法 -
while(something)
{
/*
...
Some codes
...
*/
if(!thread.isAlive()) {
thread.start();
}
}