java - 所有代码执行后应用程序未终止

标签 java multithreading wait

我即将学习 java 线程工具。

我有两门课:

public class Main {
    public static void main(String[] arg) throws Exception {

        Timer timer = new Timer();
        timer.schedule(new ExecuteTimer(Thread.currentThread()), 2000);

        try {
            Thread.currentThread().join();
        } catch (InterruptedException ex) {
            System.out.println("timer stopped");
        }
        System.out.println("try block executed");
    }
}

和计时器类:

public class ExecuteTimer extends TimerTask {
    public ExecuteTimer(Thread thread) {
        creatingThread = thread;
    }
    private Thread creatingThread;

    @Override
    public void run() {
        System.out.println("I'm executed!");
        creatingThread.interrupt();

    }

}

当我调试代码时。我有以下输出:

I'm executed!
timer stopped
try block executed

一切似乎都是最终的,除了在我得到上面的输出后应用程序没有退出。 Eclipse 保持在 Debug模式,没有抛出异常。

最佳答案

当你不再需要Timer来运行任务后,你应该调用timer.cancel()来释放它的线程。

关于java - 所有代码执行后应用程序未终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026020/

相关文章:

Python线程锁在简单示例中不起作用

c++ - 我如何 "clear"std::promise?

java - Java中生产者-消费者代码的多线程没有给出正确的输出?

c# - 从同步操作方法中调用带有await的异步方法

Java 线程不响应notifyAll()

excel - Application.Wait 破坏了我的代码

java - MSSQL Server 2005-JDBC连接

java - 如何在 JavaFX 的 RangeSlider 中为拇指设置最小值?

java - 初学者Java数组问题

java - Hibernate "IN"子句为 ALL 而不是 ANY