我通常使用无限循环,如下所示:
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时间和逻辑功能所拥有的其他资源,在大多数情况下,对最终用户没有明显的影响。