0

我有两个 web 服务,它们通过线程在后台运行。如果网络出现故障,我会经常检查我的网络连接,我会显示一个带有“RESYNC”按钮的对话框。

我的意图是,当我单击 RESYNC 按钮时,未完成的线程必须重新开始。

我使用 thread.interupt() 停止线程并使用 thread.start 重新开始。

这不能正常工作,它会显示错误,就像您的线程已经在运行一样。

任何人都可以帮助我如何停止线程并重新启动它。

谢谢。

4

3 回答 3

2

不要thread.stop()用于终止线程。

您可以使用 volatile 标志:

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();停止它

要重新开始,您必须创建 Thread 的新实例,然后调用 start。

于 2012-11-15T05:39:44.693 回答
0

在你的 run() 方法上有一段时间(条件)。在您的 while 循环中是您希望线程在运行时执行的操作。通过线程上的 setter 方法将条件变量的值更改为 false。不推荐使用 java 中的 stop() 方法。

于 2012-11-15T05:43:55.610 回答