2016-03-02 2 views
-1

Я пытаюсь выполнить код в течение 5 минут внутри цикла.java-код не работает во время цикла

long init= System.currentTimeMillis(); 
while(((System.currentTimeMillis()-time)/1000%60)<5){ 

//some part of code 
} 

, но я не могу заставить его работать с любыми предложениями по его устранению.

+0

пытаются использовать таймерсм. https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html – Willmore

+1

, что указывает переменная 'time'? –

+0

long init = System.currentTimeMillis(); в то время как (((System.currentTimeMillis() - init)/1000% 60) <5) { –

ответ

0

System.currentTimeMillis() зависит от реализации и от операционной системы.

Вместо этого используйте System.nanoTime(), который возвращает текущее значение наиболее точного доступного системного таймера в наносекундах.

Это может вызвать проблемы со временем.

long init= System.nanoTime(); 
while(((System.nanoTime()-init)/1000000000/60)<5){ 

//some part of code 
} 
+0

как достичь этого через System.currentTimeMillis()? –

+0

1000% 60 неправильный. Сделать это 1000/60 – FallAndLearn

+0

Работает ли он? – FallAndLearn

0

Просто: Измените код, как показано ниже и попробуйте еще раз:

while(((System.currentTimeMillis()-time)/1000%60)<5){ 

Для

while(((System.currentTimeMillis()-init)/1000/60)<5){ 

изменение time к init и % к /