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

これはどう?

while(something)
{

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

方法の1つは、メソッドを使用することisAlive()です-

while(something)
{

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

}

于 2013-05-27T00:58:31.583 に答える