我通常使用无限循环,如下所示:

public static boolean start = false;

while(!start) {
    doMyLogic();
}

但是一位 friend 说,您需要在while-true循环(如波纹管)中留一点延迟,否则可能会导致内存问题,也不是一个好习惯。

建议方式:
while(!start) {
    Thread.sleep(few_miliseconds);  // 500 ms
    doMyLogic();
}

请告知我建议方式的影响。我做对了吗?

最佳答案

好吧,我认为它不会有内存问题(除非您的doMyLogic方法有内存问题),因为无论延迟如何,任何内存泄漏都会显示出来。 sleep 的真正好处是,在大多数情况下,不需要像计算机一样快地执行doMyLogic代码。例如,假设doMyLogic正在检查是否在目录中创建了文件。在这种情况下,计算机不必每秒检查数百次(这将需要大量的CPU和磁盘I/O),而每秒检查一次可能就足够了。

没有时间安排的最大影响是使用额外的CPU时间和逻辑功能所拥有的其他资源,在大多数情况下,对最终用户没有明显的影响。

10-07 16:35