gpt4 book ai didi

main函数返回后java进程仍然存在

转载 作者:行者123 更新时间:2023-12-01 12:23:45 27 4
gpt4 key购买 nike

我有一个主要函数,它创建一些执行复杂操作的子线程。我注意到在某些情况下我的 main 函数返回但 java 进程仍然存在。 (我知道 main 函数返回,因为在 main 函数的最后一行中我打印了一条日志)(我知道 java 进程仍然存在,因为 'ps aux | grep stuff' 告诉我这一点)。

我想知道这是预期的行为吗?如何确保java进程在main函数返回后被杀死?

谢谢!尔本

最佳答案

如果您需要结束进程(以及所有子线程),请使用System.exit(0)

示例 1

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Later: " + System.currentTimeMillis());
}
});
try {
System.out.println("now: " + System.currentTimeMillis());
// System.exit(0);
} finally {
System.out.println("finally: " + System.currentTimeMillis());
}
}

输出为

now: 1413948102997
finally: 1413948102997
Later: 1413948103999

示例 2

但是,请删除 System.exit(0); 中的评论输出类似于(没有最后后来)

now: 1413948221629

关于main函数返回后java进程仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26499747/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com