Как сделать программу на Java которая будет оста навливаться только когда я захочу?

Чтобы сделать программу на Java, которая будет останавливаться только по вашему желанию, можно использовать простой механизм управления выполнением кода, например, использовать флаг-переменную для определения состояния работы программы.

Вот пример программы на Java, которая будет выполняться, пока не будет установлен флаг "остановить":

public class Main {
    // Флаг для определения состояния работы программы
    private static boolean isRunning = true;

    public static void main(String[] args) {
        // Запускаем новый поток для выполнения программы
        Thread programThread = new Thread(() -> {
            // Ваш код программы здесь
            while (isRunning) {
                // Логика программы

                // Проверяем флаг состояния работы программы
                if (!isRunning) {
                    break; // Выходим из цикла, если флаг установлен в false
                }
            }
        });

        // Запускаем поток выполнения программы
        programThread.start();

        // Программа будет выполняться, пока не будет установлен флаг остановки
        // Например, вы можете остановить программу по нажатию определенной клавиши

        // При помощи класса Scanner можно ожидать ввода с клавиатуры
        // Здесь ожидается нажатие клавиши Enter для остановки программы
        java.util.Scanner scanner = new java.util.Scanner(System.in);
        scanner.nextLine();

        // Останавливаем выполнение программы путем установки флага в false
        isRunning = false;

        // Дожидаемся завершения потока выполнения программы
        try {
            programThread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Программа остановлена.");
    }
}

В этом примере используется основной поток выполнения программы, который ожидает ввода с клавиатуры для остановки программы. При вводе строки программа устанавливает флаг isRunning в false, что приводит к выходу из цикла и остановке выполнения программы.

Вы можете создать свою собственную логику остановки программы, например, в зависимости от определенных условий или внешних событий.

Это только один из возможных вариантов реализации и может быть адаптирован под ваши конкретные потребности и требования.