2016-09-17 5 views
-1

Я ищу хорошее объяснение разницы между «новыми» потоками в Java 8 и «старыми» потоками ввода-вывода, которые были у нас ранее в Java 7. Для кого-то, не знающего функционального программирования, трудно понять, что это разные вещи, особенно потому, что имена одинаковы. Я понимаю, что Stream API является чем-то совершенно новым и даже революционным в какой-то момент, но в моем наивном мышлении в обоих случаях мы имеем дело с последовательностями «вещей», будь то байты, данные или объекты ...Java: Разница между потоками и потоком ввода-вывода объясняется

Can кто-то, пожалуйста, предложите хорошее объяснение?

+0

Потоки ввода-вывода представляют собой потоки данных, бит и байты из некоторого источника. Потоки java8 - это способ обхода коллекций. Они используются для совершенно разных вещей. – Tobb

+1

Вы просите использовать для сравнения механизм применения методов к элементам в какой-либо форме коллекции к понятию записи (или чтения) байтов. Это не очень похожие понятия. –

+0

Да, я знаю, но это как-то слишком расплывчато для меня. Может ли это как-то объяснить, как, одна вещь - это структура данных (?), А другая вещь ... что? – codebat

ответ

1

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

Но вы можете использовать обе концепции вместе. Например, BufferedReader имеет метод lines, который возвращает строки файла (или других ресурсов) в виде потока строк.

0

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

В течение этих двух механизмов существует много различий. Например, потоки Java i/o позволяют вам только читать и записывать данные. Если вы хотите обрабатывать данные из этого потока, для этого не существует механизма. В потоке Java 8 есть дополнительные возможности processig как map/filter и т. Д.