Уже вроде задавал такой вопрос давно, но сейчас решил разобраться нормально.
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 нить останавливается. Почему так? Пробовал много раз, если курсор ставлю где-то в любом месте нажимаю, он перекидывает в конец, опять переставляю и так бесконечно можно делать...