Здравствуйте, написал код, программа работает корректно, но, когда я отправлял на валидацию, выходило Timed Out и не проходило
package com.javarush.task.task16.task1629;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {
    public static volatile BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws InterruptedException {
        Read3Strings t1 = new Read3Strings();
        Read3Strings t2 = new Read3Strings();
        t1.start();
        t1.join();
        t2.start();
        t2.join();
        //add your code here - добавьте код тут

        t1.printResult();
        t2.printResult();
    }

    public static class Read3Strings extends Thread{

        String s1, s2, s3;
        public void run() {

            try {

                    s1 = reader.readLine();
                    s2 = reader.readLine();
                    s3 = reader.readLine();



            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public void printResult(){
            System.out.println(s1 + " " + s2 + " " + s3);
        }
    }//add your code here - добавьте код тут
}
Что я сделал далее, я просто добавил перед s1 проверку готовности ридера, т.е. if (reader.ready()) { ... } Вывод стал некорректным, ввод с консоли вообще не происходил (т.е. программа запускалась и сразу завершалась, выводив в консоль null null null). НО! Валидатор её принял и посчитал решённой, может объяснить эту магию, пожалуйста?