Пример с вызовом Console.WriteLine() из нескольких параллельных потоков — канонический пример, встречающийс в интернете на каждом углу, как иллюстрация многопоточности. Следовательно, мысль о блокировке stdin и stdout неверна.
С другой стороны, возможно, ReadLine ведет себя по-другому. Тогда я соглашусь с предыдущим комментарием — нужно выносить бесконечный цикл в поток, а интерактивно работать в основном.