Смоделировать консольный ввод Enter

204
07 января 2019, 15:20

Есть класс TestThread который запускает класс Writer который печатает сообщения и останавливается по нажатию клавиши Enter в консоли. В классе TestMain вызывается метод main() класса TestThread, в нем же нужно смоделировать консольный ввод Enter (пустая строка или lineSeparator()) через 2 секунды после запуска, чтобы остановить поток. Как мне заменить стандартный поток ввода, так чтобы можно было смоделировать это? Обязательно с помощью потоков.


public class TestThread {
    Thread thread = new Writer();
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        TestThread testThread = new TestThread();
        testThread.start();
        while (true) {
            if (in.nextLine().equals("")) {
                testThread.end();
                break;
            }
        }
    }
    public void start(){
        thread.start();
    }
    public void end(){
        thread.interrupt();
    }
    private class Writer extends Thread{
        @Override
        public void run() {
            try {
                while (!isInterrupted()) {
                    sleep(1000);
                    System.out.println("Something");
                }
            } catch (InterruptedException e) {
            }
        }
    }
}

public class TestMain {
    public static void main(String[] args) {
        //вот тут нужно заменить поток ввода на наш, как я понимаю
        //System.setIn(OUR_INPUT_STREAM);
        Thread thread = new Thread(()->{TestThread.main(null); });
        thread.start();
        //а тут смоделировать нажатие Enter с задержкой 


    }
}
READ ALSO
Получение сообщений андроидом от firebase

Получение сообщений андроидом от firebase

Есть десяток андроидов, все подписаны на topic firebaseСообщения не содержат заголовка (notification) только date и не много

145
Покрыть тестом значение в методе

Покрыть тестом значение в методе

Есть класс в котором есть методВ методе инициализируется переменная String, ей присваивается ссылка

168
что такое Proxy Object?

что такое Proxy Object?

что такое proxy object в Hibernate?

266