Чтение данных из потока в Java

Я достаточно часто сталкиваюсь с проблемами, вызваными неправильным чтением данных из потока (java.io.InputStream). В последнее время такие проблемы почему-то стали появляться особенно часто, в связи с чем я решил разъяснить принцип раз и навсегда и просто давать всем желающим ссылку.

Как можно, используя threads отсортировать два массива, а потом объеденить

все это должно быть с использованием threads (первые два для сортировки , третий для объединения)

Как запустить метод класса в отдельном потоке?

Нужно прочитать построчно текст из файла и передать в функцию которая выполняется в другом потоке

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