Сон против ожидания: разница и сравнение

В Java есть несколько методов для выполнения определенных действий.

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

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

Основные выводы

  1. «Сон» — это состояние покоя, при котором тело и разум бездействуют, а «Ждать» — оставаться на одном месте или откладывать действие до наступления определенного события.
  2. «Сон» — естественная и необходимая функция организма, а «Ждать» — произвольное действие, которое можно выбрать или избежать.
  3. «Сон» ассоциируется с ночным временем, а «Ожидание» может наступить в любое время суток.

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

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

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

Во время использования метода сна текущий поток не теряет право собственности на монитор.

Sleep — это статический метод, являющийся частью потока класса. По истечении времени ожидания поток возвращается в исходное работоспособное состояние.

Это обеспечивает полное использование ЦП во время ожидания.

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

Затем поток продолжает выполнение, как только он получает контроль над монитором.

Это не статический метод, в отличие от сна, и он является частью класса объекта.

Сравнительная таблица

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

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

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

Читайте также:  PVR против DVR: разница и сравнение

По истечении состояния ожидания и времени состояние потока изменяется на состояние готовности к выполнению. А затем ждет ЦП для дальнейшего выполнения.

Целью этого метода является создание задержки в программе на несколько секунд и одновременно максимальное использование ЦП.

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

Можно сказать, что возвращаемый тип метода сна недействителен, так как он не возвращает никакого значения.

Спящий поток не теряет монитор и не блокирует уже полученный поток.

Если в любом случае сон будет нарушен, поток выдаст Interrupted_Exception.

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

Синтаксис метода сна: public static void sleep(длинные миллисекунды)

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

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

спать

Что такое ждать?

Wait() — это метод, используемый для связи между потоками.

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

Метод notify() разбудит указанные потоки, в то время как метод notifyAll() применим для каждого потока.

При синхронизации метод ожидания снимает блокировку с ресурсов.

У метода Wait нет возвращаемого значения, поэтому можно сказать, что он возвращает void.

Читайте также:  GPL против LGPL: разница и сравнение

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

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

Метод ожидания освобождает приостановленный или заблокированный экран во время синхронизации.

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

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

ждать

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

  1. Метод Sleep переводит поток в спящий режим на заданный и конкретный период времени, в течение указанного времени ожидания, если не истек срок его действия или не прерывается, тогда как метод Wait переводит поток в спящий режим до тех пор, пока не будут вызваны такие методы, как notify() или notifyAll().
  2. Метод Sleep выполняется в потоке, а метод Wait выполняется в объекте.
  3. Метод Sleep используется для синхронизации времени, а метод Wait используется для синхронизации нескольких потоков.
  4. Во время потока ожидания синхронизированные несколько потоков могут обращаться к одному и тому же объекту по соседству, в то время как в потоке ожидания синхронизированные несколько потоков должны ждать, пока сон текущего потока не прекратится.
  5. Метод Wait освобождает блокировку или монитор, а метод Sleep не освобождает монитор во время сна или ожидания текущего потока.
Разница между X и Y 2023 05 10T161359.507
Рекомендации
  1. https://pdfs.semanticscholar.org/51fd/24ae444910fd39b117bb3044a12591f038fa.pdf
  2. https://dl.acm.org/doi/pdf/10.1145/289524.289572

Последнее обновление: 31 июля 2023 г.

точка 1
Один запрос?

Я приложил столько усилий, чтобы написать этот пост в блоге, чтобы предоставить вам ценность. Это будет очень полезно для меня, если вы подумаете о том, чтобы поделиться им в социальных сетях или со своими друзьями/родными. ДЕЛИТЬСЯ ♥️

18 мыслей о «Сон против ожидания: разница и сравнение»

  1. В статье эффективно разъясняются различия между методами сна и ожидания, обеспечивая четкое и краткое сравнение. Подробности синхронизации и снятия блокировки особенно полезны.

    Ответить
    • В статье отлично описаны различия между методами сна и ожидания. Информация о синхронизации и снятии блокировки представлена ​​ясно и точно.

      Ответить
  2. Подробное объяснение методов сна и ожидания превосходно. Эта статья является ценным ресурсом для всех, кто хочет улучшить понимание этих фундаментальных концепций Java.

    Ответить
  3. Это всестороннее сравнение методов сна и ожидания в Java. В статье четко обозначены ключевые различия и представлена ​​полезная сравнительная таблица для справки.

    Ответить
    • Подробное описание методов сна и ожидания очень полезно. Полезно понимать нюансы и функциональные возможности этих методов в программировании на Java.

      Ответить
    • Я нашел объяснение методов сна и ожидания информативным и точным. Сравнительная таблица особенно полезна для обобщения контрастирующих особенностей этих методов.

      Ответить
  4. В статье проводится тщательное сравнение методов сна и ожидания в Java. Я ценю подробные объяснения, которые дают ценную информацию об их функциях.

    Ответить
    • Я нашел статью информативной и хорошо составленной. Объяснения методов сна и ожидания способствуют лучшему пониманию их использования и значения в Java.

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

    Ответить
  6. Эта статья — ценный ресурс для понимания методов сна и ожидания в Java. Объяснения подробные, а сравнительная таблица представляет собой удобную справочную информацию для понимания различий между этими методами.

    Ответить
    • Я разделяю то же мнение, Вморган. Сравнительная таблица дает четкое представление о различиях, а подробные описания улучшают понимание методов сна и ожидания.

      Ответить
  7. Спасибо за статью. Я ценю подробное объяснение различий между методами сна и ожидания. Хорошо иметь четкое представление о том, как они функционируют в программе Java.

    Ответить
    • Ваше объяснение концепции очень хорошо структурировано и легко для понимания. Я согласен, что крайне важно иметь ясность в отношении этих фундаментальных методов.

      Ответить
  8. В этой статье подробно объяснено различие между методами сна и ожидания. Я нашел объяснение поведения метода ожидания во время синхронизации особенно показательным.

    Ответить
    • Согласен, Фрейя. В статье дается четкое и точное объяснение поведения метода ожидания, что упрощает понимание его функциональности в Java.

      Ответить
    • Описание в статье поведения и типов возврата методов сна и ожидания очень информативно. Понимание этих различий необходимо для эффективной многопоточности в Java.

      Ответить
  9. Я нашел статью очень информативной и познавательной. Углубленный анализ методов сна и ожидания во многом способствует пониманию их нюансов и последствий в Java.

    Ответить
  10. В статье представлен всесторонний анализ методов сна и ожидания в Java. Объяснения хорошо организованы и во многом способствуют более глубокому пониманию этих фундаментальных методов.

    Ответить

Оставьте комментарий

Хотите сохранить эту статью на потом? Нажмите на сердечко в правом нижнем углу, чтобы сохранить в свой собственный блок статей!