我有两个 web 服务,它们通过线程在后台运行。如果网络出现故障,我会经常检查我的网络连接,我会显示一个带有“RESYNC”按钮的对话框。
我的意图是,当我单击 RESYNC 按钮时,未完成的线程必须重新开始。
我使用 thread.interupt() 停止线程并使用 thread.start 重新开始。
这不能正常工作,它会显示错误,就像您的线程已经在运行一样。
任何人都可以帮助我如何停止线程并重新启动它。
谢谢。
我有两个 web 服务,它们通过线程在后台运行。如果网络出现故障,我会经常检查我的网络连接,我会显示一个带有“RESYNC”按钮的对话框。
我的意图是,当我单击 RESYNC 按钮时,未完成的线程必须重新开始。
我使用 thread.interupt() 停止线程并使用 thread.start 重新开始。
这不能正常工作,它会显示错误,就像您的线程已经在运行一样。
任何人都可以帮助我如何停止线程并重新启动它。
谢谢。
不要thread.stop()
用于终止线程。
您可以使用 volatile 标志:
private volatile boolean running = true;
public void stop() {
running = false;
}
public void run() {
while(running) {
// your code
}
}
线程无法重新启动,您可以通过stop()
;停止它
要重新开始,您必须创建 Thread 的新实例,然后调用 start。
在你的 run() 方法上有一段时间(条件)。在您的 while 循环中是您希望线程在运行时执行的操作。通过线程上的 setter 方法将条件变量的值更改为 false。不推荐使用 java 中的 stop() 方法。