Java 在循环中启动一个线程
我想知道如何在循环中第一次启动线程: 例如:Java 在循环中启动一个线程,java,multithreading,exception,loops,Java,Multithreading,Exception,Loops,我想知道如何在循环中第一次启动线程: 例如: while(something) { /* ... Some codes ... */ thread.start(); } 问题是我遇到了以下错误: java.lang.IllegalThreadStateException: Thread already started. …因为每次在循环中都会重新启动线程 如何在循环中只启动一次线程?这个怎么样 while(something) { /* ... Some code
while(something)
{
/*
...
Some codes
...
*/
thread.start();
}
问题是我遇到了以下错误:
java.lang.IllegalThreadStateException: Thread already started.
…因为每次在循环中都会重新启动线程
如何在循环中只启动一次线程?这个怎么样
while(something)
{
/*
...
Some codes
...
*/
if (!thread.isAlive()) {
thread.start();
}
}
设置一个布尔值,告诉您何时设置该值,以便将其设置一次。我不知道为什么不能在循环之外设置它,但是如果我理解正确的话,类似的东西应该可以工作
boolean started = false;
while(something){
if(!started){
thread.start();
started = true;
}
}
其中一种方法是使用
isAlive()
方法-
while(something)
{
/*
...
Some codes
...
*/
if(!thread.isAlive()) {
thread.start();
}
}您可以通过
getState()
为什么不在循环之前/之后启动线程?+1是一个解决方案,如果线程死了也不会引起问题。它仍然会告诉我错误,因为线程死了,它会重新启动,就像@johnchen902所说的那样
while(something){
/* ... */
if (thread.getState() == Thread.State.NEW) {
thread.start();
}
}