我希望在特定的时间触发Java代码,比如每天早上1点。我编写了以下线程:
我的第二个问题是,有时我看到像下面这样写的
while (true) {
if (currentTime = 1AM) {
doSomething;
}
}
我有点担心,while循环
一直在运行,会不会减慢计算机速度或占用处理资源?
我的第一个问题是,如果我每秒只循环一次,会更好吗?
while (true) {
if (currentTime = 1AM) {
doSomething;
}
Thread.sleep(1000);
}
我的第二个问题是,有时我看到像下面这样写的
while循环
,大多数情况下是为了获取Java锁,请问如果我们像下面这样写while循环
,会有多么昂贵的代价(如果这是一个非常基础的问题,请原谅)?while (isLock) {
// do nothing
}
doThisIfNoLock();
我扩展一下上面的想法,如果我创建一个空线程,并在其中放置一个无限的空while loop
,那么这个线程实际上会占用多少资源(处理能力)呢?因为循环内没有任何内容,根据我的想象,循环将非常快地运行,并最终占用许多CPU周期。这是真的吗?
java.util.Timer
也比你所尝试的更好。 - Mad Physicist