Хорошо, если предположить, что с «меньшим» вы имеете в виду «немного меньше», как estimatedTime = 999999321
, то это нормально.
По сути, вы останавливаете свой поток, что означает, что ОС должна отправитьПрерывание, сохранение текущего состояния потока, вызов другого потока, чтобы занять его место, и через секунду система должна снова разбудить ваш поток. Таким образом, он проверит, доступно ли вычислительное время, если нет, он может попытаться прервать другой поток (см. Выше) или даже подождать несколько микросекунд, пока другой поток не остановится. Затем он восстанавливает состояние из ранее остановленного потока и продолжает его выполнение.
Посмотрите описание Документы для Thread.sleep () , они говорят:
(...) Однако эти времена ожидания не гарантируются точными, поскольку они ограничены возможностями, предоставляемыми базовой ОС. Кроме того, период ожидания может быть прерван прерываниями, как мы увидим в следующем разделе. В любом случае, вы не можете предполагать, что вызов сна приостановит поток именно на указанный период времени .