java - 我正在寻找优雅地停止 java 线程并发现了这一点,但我不知道如何检查这种情况的示例

标签 java thread-safety

这是停止线程的一个很好的例子。 How to stop a java thread gracefully?
但是当我尝试检查这个示例时,我收到了无限循环。

这是我的代码:

public class Num {

    public void crash(ManualStopping t1) {
        t1.stopMe();
    }

    public static void main(String[] args) {

        Num num = new Num();
        ManualStopping t1 = new ManualStopping();
        t1.run();
        System.out.println("Main thread");
        num.crash(t1);
    }
}
class ManualStopping extends Thread {

    volatile boolean finished = false;
    public void stopMe() {
        finished = true;
    }
    public void run() {
        while (!finished) {
            System.out.println("I'm alive");
        }
    }
}

最佳答案

我认为您需要启动您的线程 - 而不是运行它。通过调用 run,您只是进行正常的方法调用,而不是运行单独的线程。

关于java - 我正在寻找优雅地停止 java 线程并发现了这一点,但我不知道如何检查这种情况的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7710521/

相关文章:

java - java程序中线程的字数统计

javascript - Google Apps 脚本 PropertiesService 访问冲突

java - 期望编程 : How to expect exactly what is prompted?

java - 如何在 Log4j2 中使用 slf4j 的格式化消息

java - 为什么我们需要一个空的构造函数来传递/保存来自 Firebase 的数据?

java - spectj-maven-plugin,声明soft如何编译

c# - 新手 c# 线程如何处理在另一个线程上引发的事件

java - 每秒更改 TextView 文本

java - 对象级锁定是线程安全的吗?

java - 如何确保每个线程工作在不同的进程对象上以避免线程安全问题?