Есть несколько способов сделать это.Как и предлагалось в других публикациях, вы можете использовать System.currentTimeMillis()
и сравнить его с переменной long startTime
, которую вы передаете через рекурсивный вызов, или каким-либо другим образом доступен для рекурсивной функции во время ее выполнения. или Вы можете использовать Runnable
или Callable
, чтобы перевернуть флаг или запустить обратный вызов после 5000 мс sleep()
, но я думаю, что это может быть излишним.
В последний раз I сделал нечто подобное, я использовал класс Guava с именем StopWatch
, который предоставляет хороший метод с именем elapsedMillis()
, который дает вам количество прошедших миллисекунд с момента запуска StopWatch
.Этот подход больше всего похож на System.currentTimeMillis()
, но требует чуть меньше котельной плиты.Если введение Guava в качестве зависимости не является вариантом, тогда вы всегда можете реализовать подобный класс самостоятельно, который в любом случае просто использовал бы System.currentTimeMillis()
.