gpt4 book ai didi

java - 使用Java线程作为任务调度器,

转载 作者:太空宇宙 更新时间:2023-11-04 11:25:04 25 4
gpt4 key购买 nike

我想每隔几毫秒安排一次任务,并且我了解计时器、执行器等。我发现这个方法是最准确的。但我只是想知道我的方式对于(大)程序来说是否太重?

    new Thread(() -> {
long time = System.currentTimeMillis();
while (true) {
if (System.currentTimeMillis() - time >= 1000) {
// Scheduled task
System.out.println(new SimpleDateFormat("HH:mm:ss:SSS").format(new Date(System.currentTimeMillis())));
time = System.currentTimeMillis();
}
}
}).start();

最佳答案

您的方法为每个重复任务创建一个新线程。每个线程都需要分配整个堆栈。因此,您的方法的内存消耗比它需要的要大得多。如果您创建足够多的计时器线程,这可能会成为一个问题。

如果您要处理大量此类任务,最好使用 java.util.Timer 和 TimerTasks。

顺便说一句,正如所写,您的任务计时会发生变化,因为在触发任务和重置 time 变量之间偶尔会有额外的毫秒或更长时间。不过,这可以在您的代码中修复。

关于java - 使用Java线程作为任务调度器,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44468021/

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