Главная » Java » Краткий обзор классов потоков в Java

0

 

   В пакете Java, iо определен целый ряд типов потоков. Типы потоков обычно представлены парами классов, отвечающими за ввод (чтение) и вывод (запись; данных, и большинство из них реализовано как в байтовом, так и в симводьно вариантах. Некоторые из потоков обладают свойствами, определяющими повед ние остальных потоков.

 

·         Абстрактные классы  Filter представляют потоки,  позволяющие при нять к данным, считываемым или записываемым посредством другого тока, некоторые операции фильтрации. Например, объект FilterReader получая данные от иного объекта Reader, обрабатывает (фильтрует) их определенным образом и возвращает соответствующий результат. Фильтрованные потоки (filtered streams) могут объединяться в цепочки, реализующие единый сложный фильтр. Выводимые (записываемые) данные фильтруются аналогично (см. раздел 15.4.2).

 

·         Классы Buffered служат для представления буферизованных потоков (buffered streams), позволяющих избежать необходимости непосредственного доступа к файловой системе при выполнении каждой операции read или write. В символьных версиях этих потоков также поддерживаются средства работы со строками (см. раздел 15.4.3).

 

·          Классы Piped моделируют пары взаимосвязанных канальных потоков (piped streams): набор байтов, записанный, скажем, в поток pipedOutputStream, может быть считан из потока PipedlnputStream (см. раздел 15.4.4).

  Существует группа потоков, называемых потоками в памяти (in-memory streams), которые позволяют использовать в качестве источника или получателя информации структуры данных, организованные в оперативной памяти:

 

               *потоки ByteArray взаимодействуют с массивами типа byte (см. раздел

                15.4.5);

 

              *потоки CharArray используют массивы типа char (см. раздел 15.4.6);

 

               * потоки  String работают со  строковыми  типами  (см.  раздел   15.4.7  ).

В пакете Java, iо определен ряд потоков, которые не обладают соответствующим дополняющим потоком ввода или вывода:

 

* потоки Print предлагают методы print и println, реализующие функ

ции форматированного вывода текста в удобочитаемой форме (см. раздел

15.4.8);

 

* буферизованный  поток  чтения   LineNumberReader  позволяет считывать

символьные  строки  с  сохранением  их  нумерации  (см.   раздел   15.4.9  );

 

* средства  класса   SequencelnputStream  преобразуют  последовательность

объектов Inputstream в единый поток Inputstream, так что список

 соединенных между собой байтовых потоков ввода может интерпретировать

ся в виде одного потока ввода (см. раздел 15.4.10).

 

 Cyществуют также такие потоковые классы, которые удобно применять для построения лексических и синтаксических анализаторов:

 

*потоки   Pushback обеспечивают  поддержку  обратного  буфера  (pushback

buffer), который позволяет возвращать считанные данные назад в поток,

если,   скажем,   объем   введенных   данных   слишком   велик   (см.   раздел

15.4.11);

 

 

* средства класса StreamTokeni zer реализуют функции разбиения сим вольных данных потока чтения на лексемы (распознаваемые "слова") (cм. раздел 15.4.12).

 

 Все упомянутые классы допускают расширение с целью создания новых ти пов потоков, предназначенных для решения специальных задач.

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

 

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии