Есть класс 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 с задержкой
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости