Уже вроде задавал такой вопрос давно, но сейчас решил разобраться нормально.
public class Test {
public static void main(String[] args) throws InterruptedException{
MyThread myThread = new MyThread();
myThread.start();
Scanner scanner = new Scanner(System.in);
scanner.nextLine();
myThread.shutdown();
}
}
class MyThread extends Thread {
private volatile boolean running = true;
@Override
public void run() {
while (running) {
System.out.println("Hello");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void shutdown() {
this.running = false;
}
}
Заметил, что volatile в данном случае не помогает остановить нить сразу. Понимаю, что это еще зависит от ОС, но все же, в моем случае необходимо, чтобы курсор находился именно в самом конце вывода, только тогда при нажатии на enter нить останавливается. Почему так?
Пробовал много раз, если курсор ставлю где-то в любом месте нажимаю, он перекидывает в конец, опять переставляю и так бесконечно можно делать...