Java:如何停止线程?

2022-09-02 11:11:12

有没有办法从线程外部停止另一个线程?例如,如果我运行一个线程来运行该线程并导致该线程停止?它会停止另一个线程吗?

有没有办法在没有循环的情况下从内部停止线程?例如,如果您正在理想地下载,您将希望使用循环,如果我使用循环,我将无法暂停它,直到它到达循环的末尾。


答案 1

我们不会停止或杀死一个线程,而是这样做Thread.currentThread().isInterrupted().

public class Task1 implements Runnable {
    public void run() {
            while (!Thread.currentThread().isInterrupted()) {
                       ................
                       ................
                       ................
                       ................
           }
    }
}

在主要情况下,我们将这样做:

Thread t1 = new Thread(new Task1());
t1.start();
t1.interrupt();

答案 2

您可以创建一个布尔字段并在运行中检查它:

public class Task implements Runnable {

   private volatile boolean isRunning = true;

   public void run() {

     while (isRunning) {
         //do work
     }
   }

   public void kill() {
       isRunning = false;
   }

}

要停止它,只需调用

task.kill();

这应该有效。