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

Программные каналы

02.07.2016


Программные каналы (pipes) являются частью пакета java.io, то есть это не какие-то особенности, присущие только ОС Android, а общие функциональные компоненты языка Java. Программный канал, или просто канал, позволяет двум потокам в одном процессе установить соединение и создать однонаправленный канал передачи данных. Поток, часто условно обозначаемый как «производитель», записывает данные в канал, а поток-«потребитель» читает здесь данные из канала.


Программный канал в языке Java можно сравнить с аналогичным операто- L J ром программного канала в командной оболочке Unix и Linux (обозначаемым символом I), который используется для перенаправления вывода одной команды на ввод другой1. В Linux оператор программного канала работает между процессами, но в языке Java программные каналы действуют только между потоками в одной виртуальной машине, например в пределах одного процесса.


Программный канал представляет собой кольцевой буфер в памяти, доступный только двум соединяемым потокам. Никакие другие потоки не могут получить доступа к данным в этом буфере. Тем самым обеспечивается безопасность потоков, которая обсуждалась в разделе «Безопасное состояние потока» выше. Программный капал работает в одном направлении, позволяя одному потоку только записывать данные в канал, а другому - только читать данные из канала.