ループで初めてスレッドを開始する方法を知っているのだろうか:
例:
while(something)
{
/*
...
Some codes
...
*/
thread.start();
}
問題は、このエラーが発生することです:
java.lang.IllegalThreadStateException: Thread already started.
..ループ内で毎回スレッドを再起動するため...
ループ内でスレッドを1回だけ開始する方法は?
ループで初めてスレッドを開始する方法を知っているのだろうか:
例:
while(something)
{
/*
...
Some codes
...
*/
thread.start();
}
問題は、このエラーが発生することです:
java.lang.IllegalThreadStateException: Thread already started.
..ループ内で毎回スレッドを再起動するため...
ループ内でスレッドを1回だけ開始する方法は?
一度設定するために、値がいつ設定されるかを知らせるブール値を設定します。ループの外に設定できない理由はわかりませんが、正しく理解していれば、このようなものが機能するはずです。
boolean started = false;
while(something){
if(!started){
thread.start();
started = true;
}
}
これはどう?
while(something)
{
/*
...
Some codes
...
*/
if (!thread.isAlive()) {
thread.start();
}
}
方法の1つは、メソッドを使用することisAlive()
です-
while(something)
{
/*
...
Some codes
...
*/
if(!thread.isAlive()) {
thread.start();
}
}