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