gpt4 book ai didi

Java.util.Timer - 主线程结束时继续处理

转载 作者:行者123 更新时间:2023-12-01 18:04:59 25 4
gpt4 key购买 nike

我有一个使用util.Timer的简单代码

public class CheckDBAccessListOpenAccesses extends TimerTask {
public static void main(String[] args) {
CheckDBAccessListOpenAccesses object = new CheckDBAccessListOpenAccesses();
}

private CheckDBAccessListOpenAccesses() {

System.out.println("Start");
Timer whatAccessAreOpen = new Timer();
whatAccessAreOpen.scheduleAtFixedRate(this, TimeUnit.MINUTES.toMillis(1), TimeUnit.MINUTES.toMillis(1));
Thread.sleep(100*60*1000);
System.out.println("finish");
}

@Override
public void run() {
System.out.println("one minute");
}

}

当我运行代码时,该进程将永远运行。我希望当主线程结束时进程停止。为什么定时器使进程保持 Activity 状态?有什么办法可以预防吗?

最佳答案

Java 有两种类型的线程:用户线程和守护线程。用户线程可以防止 JVM 终止,而守护线程则不能。默认情况下,定时器由用户线程支持,除非在构造函数中指定它作为守护进程运行。

要防止计时器保持进程处于 Activity 状态,请使用以下命令实例化计时器:

new Timer (true)

参见:https://docs.oracle.com/javase/8/docs/api/java/util/Timer.html#Timer-boolean-

关于Java.util.Timer - 主线程结束时继续处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37254514/

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