Если ваш шаг преобразования не является действительно интенсивным, это, вероятно, пустая трата времени.
Подумайте об этом так.Что вы просите?
Вы запрашиваете что-то, что
- Принимает входящий поток данных
- Копирует его в другой поток
- Представляет это потоку как входящий поток данных
Какая структура данных лучше всего представляет входящий поток данных для шага 3?(Подсказка: это InputStream, с которого вы начали!)
Какое значение добавляют первые два шага?Поток "transform" может читать с диска так же быстро, как и с диска через другой поток.Добавление потока между ними не ускоряет чтение с диска.
Вы могли бы начать добавлять другой поток, когда
- Ваша проблема может быть полезной разделены на независимые части работы (скажем, каждый поток работает с фрагментом текста
- Стоимость разделения задачи на эти части работы значительно меньше , чем накладные расходыдобавление дополнительного потока и координация между ними (что мало, но не бесплатно!)
- Проблема требует больше ресурсов, чем может обеспечить один процессор (поток дает вам доступ к большему количеству ресурсов процессора, но необеспечивает большую ценность с точки зрения пропускной способности ввода / вывода)