java - 如何停止线程 - Java

标签 java multithreading

如果我有以下结构,有人能告诉我如何停止线程吗?

我想在线程 C 到期后停止线程 B

enter image description here

    c = new c();
    c.start();
    b = new b();
    b.start();

class c extends Thread {

    @Override
    public void run() {
      // DRAW IMAGE
      // b.stop(); - doenst work
    }
}

class b extends Thread {

    @Override
    public void run() {
      // PROGRESS BAR

    }
}

最佳答案

没有立即停止线程的好方法。

  • Thread.stop(),但它很危险且已弃用。不要使用它,除非您彻底分析了您的代码并确定风险可以接受。

  • Thread.interrupt(),但不能保证线程会很快停止,甚至根本不会停止。

例如:

while (!Thread.interrupted()) {
    try {
        //do stuff
    } catch (InterruptedException e) {
        // end up
    }
}
  • 有编写线程定期检查标志的方法,但如果不经常检查标志(意外或设计),则线程不会很快停止。

请引用this了解更多详情

关于java - 如何停止线程 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655734/

相关文章:

java - 运行最后一行包含 'exit' 的批处理文件后,命令提示符不关闭

multithreading - Spring @Async 限制线程数

java - NetBeans 制作的 jar 文件无法通过双击启动

java - 如何生成不重复的随机字符串数组 url?

java - 在servlet中获取sqlexception

java - "Arrays.copyOf"在 Kotlin

java - 将使用多线程的程序变成使用阻塞队列的程序

python - 在 Python 中选择正确的线程数

java - 从多个线程写入多个文本文件

multithreading - Await.result还是一个简单的电话?