我计划创建一个像计时器一样的线程。我将使用 sleep 在特定延迟后重新触发操作..
我担心 JVM 是否可以在不关闭应用程序的情况下突然终止我的线程,
因此,如果应用程序正在运行并且该线程终止,我的功能将无法获得新的 token 。
要么我必须编写一些手动功能来重新启动它。
所以我的问题是:JVM 可以突然终止任何线程吗?
安排任务的最佳解决方案是什么?由于我的任务执行时间是在运行时到来的,因此我无法使用固定计划执行器。
最佳答案
据我所知,JVM 不会随机终止任何线程,因为这会导致所有 Java 程序出现未定义的行为。但是,如果没有非守护线程的正在运行的线程,JVM 将自行关闭并杀死任何标记为守护线程的正在运行的线程。
引用自Thread::setDaemon
:
Marks this thread as either a daemon thread or a user thread. The Java Virtual Machine exits when the only threads running are all daemon threads.
要重复安排任务,您应该使用 ScheduledExecutorService
只要有可能。事实上,您在运行时遇到延迟并不妨碍您这样做。
关于java - JVM 可以在应用程序运行时(突然)杀死计时器/守护线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36190992/