Выход из бесконечного цикла по нажатию. java

Есть простой бесконечный цикл.

Работает без привязки к каким-либо объектам. (awt swing etc.)

Нужно просто выйти, если была нажата любая клавиша.

while (true) {
System.out.println("Внутри цикла");
            
// куча всяких операторов
            
// if (была ли нажата клавиша?) break;
// если нет, продолжает работать дальше, не ждет нажатия.
}

Нет никаких готовых простых решений, без сторонних нативных библиотек и подключения других классов?


Ответы (1 шт):

Автор решения: World 006
import java.util.Scanner;

public class Main {

    static boolean check = true;
    static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        new Thread(() -> {
            int i = 0;
            while (check) {
                System.out.print("Внутри цикла "+i+"\r");
                i++;
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
        new Thread(() -> {
            if(scanner.hasNext()){
                check = false;
            }
        }).start();
    }
}

есть 2 потока, один выводит в консоль текст пока check = true, другой - ожидает строку, и когда второй поток видет сообщение он делает check = false из-за чего перестаёт работать while

→ Ссылка