我想在特定的时间触发一个Java代码,比方说每天早上1点。无限的'while循环'是否会消耗过多的资源
我写一个线程如下:
while (true) {
if (currentTime = 1AM) {
doSomething;
}
}
我有点担心,while loop
继续运行,它会减慢机器,或者吃起来处理资源?
我的第一个问题是,我想如果我只循环每秒1次,会更好吗?
while (true) {
if (currentTime = 1AM) {
doSomething;
}
Thread.sleep(1000);
}
我的第二个问题是,有一段时间我看到while loop
下面写的,大部分的时间来获取Java的锁,任何人都可以解释如何昂贵,如果我们写的while loop
像下面(对不起,如果这是非常基本的问题)?
while (isLock) {
// do nothing
}
doThisIfNoLock();
我延长思想上面,如果我创建一个空的线程,无限空while loop
里面,有多少资源(处理能力),实际上由线程吃起来?由于循环中没有内容,根据我的想象,循环将运行得非常快,最终会花费很多周期的CPU功耗?真的吗?
有调度程序可以执行此类操作。看看Quartz Scheduler。如果你使用Spring,你可以安排这样的事情。你的方法不好 – TheLostMind
即使'java.util.Timer'也比你尝试的更好。 –
你无法在while循环中运行无限..它会吸收资源并减慢处理速度。改用调度器。 – Rish