虽然正确但有延迟

Sur*_*nga 5 java while-loop

我通常按​​以下方式使用无限循环:

public static boolean start = false;

while(!start) {
    doMyLogic();
}
Run Code Online (Sandbox Code Playgroud)

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

建议方式:

while(!start) { 
    Thread.sleep(few_miliseconds);  // 500 ms
    doMyLogic();
}
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*rea 2

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

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