0

我想知道如何在循环中第一次启动线程:

例子:

while(something)
{

 /*
 ...
 Some codes
 ...
 */

   thread.start();
}

问题是我收到此错误:

java.lang.IllegalThreadStateException: Thread already started.

..因为它每次都在循环中重新启动线程...

如何在循环中仅启动线程 1 次?

4

4 回答 4

4

设置一个布尔值以告诉您何时设置该值以便设置一次。我不知道为什么你不能将它设置在循环之外,但如果我理解正确的话,这样的事情应该可以工作。

boolean started = false;

while(something){
    if(!started){
        thread.start();
        started = true;
    }
}
于 2013-05-27T00:57:32.547 回答
3

您可以通过以下方式检查线程的状态getState()

while(something){
    /* ... */

    if (thread.getState() == Thread.State.NEW) {
        thread.start();
    }
}
于 2013-05-27T01:10:02.137 回答
3

这个怎么样?

while(something)
{

 /*
 ...
 Some codes
 ...
 */
   if (!thread.isAlive()) {
     thread.start();
   }
}
于 2013-05-27T00:56:37.063 回答
2

其中一种方法可能是使用该isAlive()方法 -

while(something)
{

/*
...
Some codes
...
*/
 if(!thread.isAlive()) {
   thread.start();
 }

}

于 2013-05-27T00:58:31.583 回答