Древняя архитектура обработки электронной почты - компания по разработке веб-приложений и мобильных приложений на Ruby из Индии

Служба EmailManager (поток) поддерживает свою внутреннюю очередь событий, в которой используются синхронизированные блоки событий, такие как синхронизированный postEvent (метод), синхронизированный getNextEvent (метод).

Очередь событий ставит в очередь события как от базовых одноранговых классов, так и от доверенных классов приложений. Очередь событий асинхронно извлекает события из очереди и отправляет их, вызывая dispatchEvent (AWTEvent). Синхронизация в java, возможность предоставлять любой общий ресурс нескольким потокам.

Зачем нужна синхронизация:

  1. Чтобы предотвратить натяжение резьбы.
  2. Чтобы предотвратить проблему согласованности, то, что вы называете проблемой потребителя и производителя

Синхронизация потоков:

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

  1. Синхронизированный метод.
  2. Синхронизированный блок.
  3. статическая синхронизация.

Сотрудничество (межпотоковое общение на java)

См. рисунок: поток, который помещал события в очередь, и другой поток, извлекающий событие, имели одинаковый приоритет, то есть приоритет по умолчанию. Когда поток задач и предупреждений помещает событие сообщения электронной почты во внутреннюю очередь событий, он получает блокировку объекта, связанную с общим ресурсом, прежде чем сможет войти в его критическую секцию. Система времени выполнения гарантирует, что никакой другой поток не сможет войти в общий ресурс, если другой поток уже удерживает связанную с ним блокировку объекта. Если поток (поток диспетчера электронной почты) не может немедленно получить блокировку объекта, он блокируется, т.е. поток диспетчера электронной почты должен ждать, пока блокировка станет доступной. Поток диспетчера электронной почты заблокирован на неопределенное время, ожидая входа в синхронизированный блок, потому что другим потокам постоянно разрешен доступ, прежде чем он получит, так как ему предстоит выполнить огромный объем работы.

Автор - Неха Чопра, инженер-программист

adminДревняя архитектура обработки электронной почты01.05.2017

Первоначально опубликовано на сайте navyuginfo.com 5 января 2017 г.