首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java:如何停止线程?

Java:如何停止线程?
EN

Stack Overflow用户
提问于 2013-11-11 04:13:50
回答 4查看 110.5K关注 0票数 18

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

有没有一种方法可以在没有循环的情况下从内部停止线程?例如,如果你正在下载,理想情况下你会想要使用一个循环,而如果我使用一个循环,我将不能暂停它,直到它到达循环的末尾。

EN

回答 4

Stack Overflow用户

发布于 2013-11-11 04:25:02

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

代码语言:javascript
复制
public class Task1 implements Runnable {
    public void run() {
            while (!Thread.currentThread().isInterrupted()) {
                       ................
                       ................
                       ................
                       ................
           }
    }
}

在main中,我们将这样做:

代码语言:javascript
复制
Thread t1 = new Thread(new Task1());
t1.start();
t1.interrupt();
票数 27
EN

Stack Overflow用户

发布于 2013-11-11 04:18:36

您可以创建一个布尔值字段,并在run中对其进行检查:

代码语言:javascript
复制
public class Task implements Runnable {

   private volatile boolean isRunning = true;

   public void run() {

     while (isRunning) {
         //do work
     }
   }

   public void kill() {
       isRunning = false;
   }

}

要停止它,只需调用

代码语言:javascript
复制
task.kill();

这应该是可行的。

票数 25
EN

Stack Overflow用户

发布于 2013-11-11 04:16:23

推荐的方式是将其构建到线程中。所以,你不能(或者更确切地说不应该)从外部杀死线程。

如果需要停止线程,请不要频繁地检查它。(而不是阻塞套接字,直到有数据。使用超时,并每隔一段时间检查用户是否表示要停止)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19894607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档