Где купить оптом постельное белье

02.07.2016

До настоящего момента все рассматривавшиеся возможности взаимодействий между потоками не выходили за рамки языка Java - они доступны в любом Java-приложепии. Эти механизмы - программные каналы, совместно используемая память, блокирующие очереди - применяются в Android-приложениях, но из-за блокировок создают дополнительные трудности для U 1-потока. При использовании механизмов с блокирующими функциями возрастает опасность ухудшения отзывчивости UI-потока, поскольку такие механизмы способны случайно ввести поток в состояние зависания.

В ОС Android наиболее часто встречается случай взаимодействия между UI-потоком и рабочими потоками. Поэтому платформа Android определяет собственный механизм передачи сообщений для организации взаимодействия между потоками. UI-поток может освободиться от задач с длительным временем выполнения, посылая фоновым потокам сообщения с данными для обработки. Механизм передачи сообщений реализует неблокирующий шаблон проектирования «производитель-потребитель», когда ни поток-производитель, ни поток-потребитель не устанавливают блокировки во время обработки сообщений. Открываете текстильный магазин? Стоит купить оптом постельное белье.

Пример: простая передача сообщений

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

Следующий ниже код демонстрирует реализацию наиболее часто применяемого варианта использования. Пользователь нажимает на экране кнопку, которая может инициализировать длительную операцию, например одну из сетевых операций. Чтобы избежать задержек при отрисовке элементов пользовательского интерфейса, такая операция, представленная в данном примере пустым методом doLongRunningOperation(), должна выполняться в рабочем потоке. Следовательно, здесь по условию задачи требуются только один поток-производитель (Ш-поток) и один поток-потребитель (LooperThread).

В коде примера создастся очередь сообщений, которая обрабатывает щелчок на кнопке, как обычно, в обратном вызове onClick (), выполняемом в UI-потоке. В данном варианте реализации этот обратный вызов вставляет пустое сообщение в очередь сообщений.