Разница между сном и ожиданием (с таблицей)

Оглавление:

Anonim

В Java есть несколько методов для выполнения определенных действий. Метод - это группа кода, которая запускается только при вызове; и может или не может вернуть результат.

Для многопоточности используются такие методы, как сон и ожидание. Оба они приостанавливают и отправляют поток в режим ожидания, но имеют существенные различия в функционировании.

Сон против ожидания

Разница между методами sleep () и wait () заключается в том, что метод sleep () используется в программе для приостановки выполнения текущего потока на определенный период времени, в то время как метод wait () используется в программе для приостановки или приостановки. текущий поток, пока не будут вызваны определенные методы.

Во время использования метода сна текущий поток не теряет права собственности на монитор. Сон - это статический метод, который является частью потока класса. По истечении времени ожидания поток возвращается в исходное рабочее состояние. Это обеспечивает полную загрузку ЦП во время ожидания.

В то время как метод wait () используется в программе Java, чтобы приказать текущему потоку ждать, пока другой поток не будет вызван для этого объекта. Затем поток продолжает выполнение, как только получает управление монитором. Это не статический метод, в отличие от сна, и является частью класса объекта.

Таблица сравнения сна и ожидания

Параметры сравнения Спать Ждать
Класс Метод сна является частью класса потока Метод ожидания является частью класса объекта.
Тип метода Сон - статический метод Ждать - это не статический метод
Техника вызова Метод сна может быть вызван извне синхронизированного контекста. Метод ожидания может быть вызван только из синхронизированного контекста.
Разблокировка замка Метод сна не снимает блокировку объекта в течение указанного тайм-аута во время синхронизации. Метод Wait снимает блокировку с объекта, чтобы иметь возможность выполнить его во время синхронизации.
Декларация public static void sleep () public final void wait ()

Что такое сон?

Поток sleep () - это статический метод в программе Java, который приостанавливает текущий поток и переводит его в состояние ожидания на определенный период времени. После того, как состояние ожидания и время истекли, состояние потока изменяется на работоспособное состояние. А затем ожидает, пока ЦП выполнит дальнейшее выполнение.

Целью этого метода является создание задержки в программе на несколько секунд и одновременно максимальное использование ЦП. Если система занята или перегружена, время ожидания или паузы больше, в противном случае оно будет меньше или равно фактическому времени.

Тип возврата метода сна можно назвать недействительным, поскольку он не возвращает никакого значения. Спящий поток не теряет монитор и не блокирует уже полученный поток. Если в любом случае сон будет нарушен, поток выдаст Interrupted_Exception. Фактическая продолжительность, в течение которой поток будет спать, обычно зависит от планировщиков и системных таймеров, которые являются частью операционной системы.

Синтаксис метода сна - публичный статический недействительный сон (длинные миллисекунды)

общедоступный статический недействительный сон (длинные миллисекунды, целые наносекунды)

Здесь миллисекунды и наносекунды - это время, в течение которого поток будет спать.

Что такое подождите?

Wait () - это метод, используемый для межпоточного взаимодействия. Каждый раз, когда используется поток wait (), вызывающий или текущий поток приостанавливается и приостанавливается до тех пор, пока в системе не будут вызваны такие методы, как notify () или notifyAll ().

Метод notify () разбудит указанный поток, в то время как notifyAll () применим для каждого потока. При синхронизации метод ожидания снимает блокировку с ресурсов. Метод Wait не имеет возвращаемого значения, поэтому можно сказать, что он возвращает void.

Двумя исключениями метода Wait являются Interrupted_Exception (когда текущий поток прерывается во время сна) и IllegalMonitorStateException (когда текущий поток не является владельцем объекта на мониторе).

Метод Wait является частью объектного класса. Метод применим только и может быть вызван через синхронизированный блок. Метод ожидания освобождает приостановленный или заблокированный экран во время синхронизации. А метод Wait позволяет синхронизированным нескольким потокам только один за другим обращаться к одному и тому же объекту.

Синтаксис метода ожидания - public final void wait ()

Основные различия между сном и ожиданием

Вывод

Методы Sleep и Wait являются собственными методами Java. И оба они широко используются, чтобы перевести текущий текущий поток в состояние неработоспособности. Оба метода используются в программе для многопоточности.

Метод сна предоставляет эксклюзивную возможность блокировки экрана на определенный период времени, который обычно составляет от наносекунд до миллисекунд. Но метод ожидания блокирует или приостанавливает экран до тех пор, пока не будет вызван другой метод, поэтому продолжительность времени не остается конкретной, как при использовании метода сна.

Они отличаются друг от друга с точки зрения конкретного функционирования, такого как класс, метод, синхронизация, продолжительность удержания и снятия блокировки, а также несколько других параметров. Часто программисты не понимают, какой метод лучше всего подходит для засыпания потока. Использование методов зависит от требований, таких как необходимость, срочность и период времени текущего потока.

Разница между сном и ожиданием (с таблицей)