Я хочу занятый цикл ожидания на определенное количество времени, и я проверил следующий код Java, который дает разные выходы на разных прогонах (иногда). Большую часть времени он дает 16 и 0. Это означает, что нельзя доверять оживленному оживанию. Какова причина?Является ли ожидание непоследовательным?
public class Testme {
public Testme() {
long start = System.currentTimeMillis();
for (int i = 0; i < 10000000L; i++) {}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
public static void main(String[] args) {
new Testme();
}
}
Этот стиль ожидания всегда будет непоследовательным, поскольку он основан на работе, а не на времени. Это в стороне, 'currentTimeMillis()', вероятно, не так подробно, как вы думаете, (не используйте его для синхронизации, как это). Кроме того, возможности для этого блока должны быть полностью оптимизированы в зависимости от настроек. – AndySavage
Вы имеете в виду, что время на основе busy-wait всегда последовательное? –
Если вы проверите время, это будет намного более последовательным, чем не проверка времени. Для обработки чего-то потребуется определенное количество времени для обработки на основе системы, в которой он работает. – phflack