我想知道如何在循环中第一次启动线程:
示例:
while(something)
{
/*
...
Some codes
...
*/
thread.start();
}
问题是我收到了这个错误:
java.lang.IllegalThreadStateException: Thread already started.
..因为它每次都在循环中重启线程......
如何在循环中只启动一次线程?
答案 0 :(得分:4)
设置一个布尔值,告诉您何时设置该值以便设置一次。我不知道为什么你不能在循环之外设置它,但如果我理解正确的话,这样的东西应该有效。
boolean started = false;
while(something){
if(!started){
thread.start();
started = true;
}
}
答案 1 :(得分:3)
这个怎么样?
while(something)
{
/*
...
Some codes
...
*/
if (!thread.isAlive()) {
thread.start();
}
}
答案 2 :(得分:3)
您可以按getState()
while(something){
/* ... */
if (thread.getState() == Thread.State.NEW) {
thread.start();
}
}
答案 3 :(得分:2)
其中一种方法可能是使用isAlive()
方法 -
while(something)
{
/*
...
Some codes
...
*/
if(!thread.isAlive()) {
thread.start();
}
}