Android中thread.start()で発生したthread already existエラー


エラーメッセージ:
FATAL EXCEPTION: main                                                                           Process: com.example.lxx.game_lxx, PID: 31256                                                                           java.lang.IllegalThreadStateException: Thread already started                                                                               at java.lang.Thread.checkNotStarted(Thread.java:849)                                                                               at java.lang.Thread.start(Thread.java:1059)                                                                               at com.example.lxx.game_lxx.lxx01_GameView.surfaceCreated(lxx01_GameView.java:114)
問題発生:
SurfaceViewを使用してゲームを描画する過程で、Threadが作成され、boolean値制御run関数のループがThreadで使用され、SurfaceCreateメソッドでスレッドのthreadが呼び出される.start()メソッド.終了後、理論的には終了時にフラグビットをfalseに設定するため、Threadでrunメソッドの実行が終了し、自動的に破棄されるべきであるが、このアクティビティを再開するとthread already existエラーが発生する.
原因を分析する
threadは、スレッド実行が終了して回収された場合でも、アクティビティの作成時に生成され、アクティビティがfinish()されない限り、アクティビティの継続中に変数が存在します.トレースstart()メソッドでは、次のコードが表示されます.
public synchronized void start() {
        if(this.threadStatus != 0) {
            throw new IllegalThreadStateException();
        } 
は、例外が文から投げ出されたことを発見しました.次にthreadStatus変数を検索します.threadStatusが変更された文はファイル全体に見つかりません.問題の原因を知っている人がいたら、指導してください.
解決方法:thread.start()をnew Thread(thread)に置き換える.start();ここでは,以前に識別ビットを用いて停止したスレッドが正常に回収されたかどうかを検出する必要があり,Android studio-"tools-"Android device monitorを用いて実行した後に見たスレッド数と,再進入を終了して見たスレッド数は同じである.以前のスレッドが正常に回収されていることを証明し,これによりこの問題は解決される.