我想知道如何在一個循環中啓動一個線程的第一時間啓動一個線程:在一個循環中
例子:
while(something)
{
/*
...
Some codes
...
*/
thread.start();
}
的問題是,我得到這個錯誤:
java.lang.IllegalThreadStateException: Thread already started.
..because它的重新啓動線程每次在環...
如何啓動線程只有1次的循環?
我想知道如何在一個循環中啓動一個線程的第一時間啓動一個線程:在一個循環中
例子:
while(something)
{
/*
...
Some codes
...
*/
thread.start();
}
的問題是,我得到這個錯誤:
java.lang.IllegalThreadStateException: Thread already started.
..because它的重新啓動線程每次在環...
如何啓動線程只有1次的循環?
設置一個布爾值來告訴您何時設置該值以便設置一次。我不知道爲什麼你不能將它設置在循環之外,但是如果我理解正確,這樣的事情應該可以工作。
boolean started = false;
while(something){
if(!started){
thread.start();
started = true;
}
}
這個怎麼樣?
while(something)
{
/*
...
Some codes
...
*/
if (!thread.isAlive()) {
thread.start();
}
}
的方式之一,可以使用isAlive()
方法 -
while(something)
{
/*
...
Some codes
...
*/
if(!thread.isAlive()) {
thread.start();
}
}
您可以通過getState()
while(something){
/* ... */
if (thread.getState() == Thread.State.NEW) {
thread.start();
}
}
+1對於線程死亡時不會造成麻煩的解決方案。 – JustDanyul
檢查線程的狀態爲什麼不啓動線程循環之前/之後? – Supericy