Помогите Диме помочь помогать помочь помогать

Экскурсии в Греции

09.07.2016


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


Когда поток не может продолжить выполнения, пока другой поток не достигнет определённого состояния, первый поток вызывает метод wait ()/wait (timeout) или аналогичный метод await ()/await (timeout), в зависимости от типа используемой синхронизации. Экскурсии в Греции. Параметр timeout определяет интервал времени, в течение которого поток должен находиться в состоянии ожидания, прежде чем продолжить выполнение.


Когда другой ноток изменит своё состояние, он передаёт сигнал об этом изменении с помощью методов notify ()/notifyAll () или аналогичных методов signal ()/signalAll(). Получив сигнал, ожидающий ноток продолжает выполнение. Перечисленные вызовы поддерживают два разных шаблона проектирования, использующих логические условия: версия notify!) или signal () посылает сигнал для выхода из состояния ожидания одному потоку, выбираемому в случайном порядке, а версия notifyAll () или signalAll () посылает такой же сигнал всем потокам, ожидающим именно этого сигнала.