【マルチスレッド】マルチスレッドの再開方法
前回はフラグを用いてマルチスレッドを終了する方法を紹介した。
今回は、一度終了したスレッドを再開させる方法について説明する。
フラグを用いてrunメソッドのループを終了するには、以下の様なソースにすると紹介した。
class multiThread extends Thread{ private boolean threadFlag = true; public void run(){ while(threadFlag){ //ここにマルチスレッドで実行したい処理を書く } } //スレッド終了時に呼び出し public void stopThread(){ threadFlag = false; } }
このソースのままで
start()でrunメソッドを実行→stopThreadで中断→再度start()でrunメソッドを実行
とすると、at java.lang.Thread.start(Unknown Source)とエラーがでてしまう。
どうやらrunメソッドを一度終了すると、スレッドの実体がなくなってしまうらしい。
そこで、以下のようにstartメソッドの中でオブジェクト作成を行うことによって、この問題は解決できる。
class multiThread extends Thread{ private boolean threadFlag = true; //スレッド開始時に実体を作成 public void start(){ threadFlag = true; new Thread(this).start(); } public void run(){ while(threadFlag){ //ここにマルチスレッドで実行したい処理を書く } } //スレッド終了時に呼び出し public void stopThread(){ threadFlag = false; } }