"Метод run должен считывать строки из reader и добавлять их в список result." Добавляет! "Метод run должен после каждого считывания увеличивать счетчик прочитанных строк readStringCount на 1." Увеличивает! "Программа должна выводить данные, считанные каждым потоком." Выводит! "Программа вывела в консоль (на экран) слишком много данных." А вот это вообще странь какая то, в условии ясно написано, "пока нить не прервана", вот и читаем пока не прервана,