У меня есть требование запустить цикл while 5 мин. Я искал таймер api, но я не мог этого сделать. Может ли кто-нибудь предоставить для этого код-снайпер.
Ходовая петля в течение 5 минут
ответ
Самый простой способ - просто проверить, сколько времени прошло на каждой итерации. Пример:
final long NANOSEC_PER_SEC = 1000l*1000*1000;
long startTime = System.nanoTime();
while ((System.nanoTime()-startTime)< 5*60*NANOSEC_PER_SEC){
// do stuff
}
Это запустит цикл, пока не истечет более 5 минут.
Примечания:
- текущей итерации цикла будет всегда полные, так что на практике она всегда будет работать на чуть более 5 минут.
- Для этого приложения
System.nanoTime()
более подходит, чемSystem.currentTimeMillis()
, потому что последний изменится, если системные часы компьютера будут отрегулированы, таким образом отбрасывая расчет. Спасибо Shloim за это.
Если пользователь настраивает свои часы во время работы вашего цикла, ваш цикл не будет работать в течение 1 минуты. Это может продолжаться месяцами или годами. Это потому, что 'System.currentTimeMillis()' возвращает количество msecs с 1970/01/01-00: 00: 00. Вам нужен счетчик времени, который является монотонным, например 'System.nanoTicks()' – Shloim
Поскольку вы говорите об API-интерфейсе таймера, я предполагаю, что вы находитесь за задержкой вместо «цикла, работающего на 5 минут». Если это так, вы можете использовать что-то вроде Thread.sleep(..), что позволит процессору делать больше полезных вещей, которые ожидают ожидание. Или, по крайней мере, сэкономить немного энергии и планеты.
Да, для простой задержки это правильный ответ. Вопрос немного неясен ... – sleske
Этот цикл будет работать в течение 5 минут. Это не будет производиться путем внесения изменений в дату/время компьютера (либо пользователем, либо NTP).
long endTime = System.nanoTicks() + TimeUnit.NANOSECONDS.convert(5L, TimeUnit.MINUTES);
while (System.nanoTicks() < endTime){
// do whatever
}
Другие методы, такие как System.currentTimeMillis()
следует избегать, поскольку они опираются на дату/время, компьютер.
- 1. Выполнение программы в течение 5 минут
- 2. Петля с помощью cx_Oracle курсорных киосков в течение нескольких минут
- 3. петля между двумя большими числами в течение нескольких минут
- 4. петля минут в JavaScript
- 5. Запись голоса в течение 5 минут в android
- 6. вычислять средние значения в течение 5 минут в mysql
- 7. Агент Zabbix on недоступен в течение 5 минут
- 8. Приостановить рабочий процесс CRM 2013 в течение 5 минут.
- 9. Создание поля результата редактируемого или обновляемого в течение 5 минут?
- 10. Рельсы фрагмент, который нужно кэширование в течение 5 минут
- 11. Настройка хрон в течение 5 минут и 30 секунд
- 12. Запрос, чтобы проверить, существует ли запись в течение 5 минут
- 13. Вычислить среднее значение в течение 5 минут inPerl
- 14. петля перерыв после минут «N»
- 15. Через 5 минут в php?
- 16. Ищете дубликаты транзакций в течение 5 минут в течение 24-часового периода времени
- 17. Запуск метода в течение заданного количества минут
- 18. Отключить кнопку в течение X минут
- 19. Запросов на 5 минут
- 20. удалить строки в течение Х минут
- 21. Функция запуска в течение 30 минут
- 22. Строительство всех повышающего в течение нескольких минут
- 23. Task.Delay() зависает в течение нескольких минут
- 24. контактная информация после 5 минут
- 25. Резьбовая петля после 20 минут (RPi/GPIO)
- 26. Rails 5 сервер отвечает после нескольких минут производства (5 минут)
- 27. Выход каждую минуту в течение десяти минут
- 28. Получить все детали в течение десяти минут
- 29. питона время получить в течение нескольких минут
- 30. Joda время все в течение нескольких минут
http://stackoverflow.com/questions/2550536/java-loop-for-a-certain-duration –
Спасибо, что я это ищу. – sjain