有没有办法从线程外部停止另一个线程?例如,如果我运行一个线程来运行该线程,并导致该线程停止?它会停止另一个线程吗?
有没有一种方法可以在没有循环的情况下从内部停止线程?例如,如果你正在下载,理想情况下你会想要使用一个循环,而如果我使用一个循环,我将不能暂停它,直到它到达循环的末尾。
发布于 2013-11-11 04:25:02
我们不会停止或杀死一个线程,而是使用Thread.currentThread().isInterrupted().
public class Task1 implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
................
................
................
................
}
}
}
在main中,我们将这样做:
Thread t1 = new Thread(new Task1());
t1.start();
t1.interrupt();
发布于 2013-11-11 04:18:36
您可以创建一个布尔值字段,并在run中对其进行检查:
public class Task implements Runnable {
private volatile boolean isRunning = true;
public void run() {
while (isRunning) {
//do work
}
}
public void kill() {
isRunning = false;
}
}
要停止它,只需调用
task.kill();
这应该是可行的。
发布于 2013-11-11 04:16:23
推荐的方式是将其构建到线程中。所以,你不能(或者更确切地说不应该)从外部杀死线程。
如果需要停止线程,请不要频繁地检查它。(而不是阻塞套接字,直到有数据。使用超时,并每隔一段时间检查用户是否表示要停止)
https://stackoverflow.com/questions/19894607
复制相似问题