0

2 つの Web サービスがあり、これらはスレッドによってバックグラウンドで実行されています。ネットワークに障害が発生した場合、ネットワーク接続を頻繁にチェックしています。「再同期」ボタンのあるダイアログを表示します。

私の意図は、再同期ボタンをクリックするたびに、完了していないスレッドを再度開始する必要があることです。

私は thread.interupt() を使用してスレッドを停止し、thread.start を使用して再度開始しました。

これは正常に機能していません。スレッドが既に実行されているようなエラーが表示されます。

スレッドを停止して再起動する方法を教えてください。

ありがとう。

4

3 に答える 3

2

thread.stop()スレッドの終了には使用しないでください。

揮発性フラグを使用できます。

private volatile boolean running = true;

public void stop() {
  running = false;
}

public void run() {
  while(running) {
    // your code
  }
}
于 2012-11-15T05:54:12.777 に答える
1

スレッドを再開することはできませんstop()

もう一度開始するには、スレッドの新しいインスタンスを作成してから start を呼び出す必要があります。

于 2012-11-15T05:39:44.693 に答える
0

run()メソッドにwhile(条件)を設定します。whileループの中には、実行中にスレッドに実行させたいことがあります。スレッドのsetterメソッドを使用して、条件変数の値をfalseに変更します。Javaのstop()メソッドは非推奨になりました。

于 2012-11-15T05:43:55.610 に答える