Это очень простой вопрос, потому что оба эти метода имеют совершенно разное использование.
Основным отличием является ожидание, чтобы снять блокировку или монитор, в то время как сон не снимает блокировку или монитор во время ожидания. Ожидание используется для связи между потоками, в то время как режим сна используется для введения паузы при выполнении.
Это было просто ясное и простое объяснение, если вы хотите большего, тогда продолжайте чтение.
В случае wait()
поток метода переходит в состояние ожидания и не возвращается автоматически, пока мы не вызовем метод notify()
(или notifyAll()
, если у вас более одного потока в состоянии ожидания и вы хотите разбудить все эти темы). А для доступа к методам wait()
или notify()
или notifyAll()
вам нужно синхронизировать объект или получить блокировку объекта или класса. И еще одна вещь, метод wait()
используется для связи между потоками, потому что, если поток переходит в состояние ожидания, вам понадобится другой поток, чтобы разбудить этот поток.
Но в случае sleep()
это метод, который используется для удержания процесса в течение нескольких секунд или нужного времени. Потому что вам не нужно провоцировать какой-либо метод notify()
или notifyAll()
, чтобы вернуть этот поток. Или вам не нужен какой-либо другой поток, чтобы перезвонить этому потоку. Например, если вы хотите, чтобы что-то произошло через несколько секунд, как в игре после поворота пользователя, вы хотите, чтобы пользователь ждал, пока компьютер начнет играть, вы можете упомянуть метод sleep()
.
И еще одно важное отличие, которое часто задают в интервью: sleep()
относится к Thread
классу и wait()
относится к Object
классу.
Это все различия между sleep()
и wait()
.
И у обоих методов есть сходство: оба они являются проверенным оператором, поэтому вам нужно попробовать catch или throws для доступа к этим методам.
Надеюсь, это поможет вам.