Задать вопрос

Как создать Java приложение без GUI?

Написал простое приложение:
package program;
public class Program {
    javax.swing.Timer dynTimer;
    
    public static void main(String[] args) {
        Program p = new Program();
        p.init();
        p.start();
    }

    private void init() {
        System.out.println("> Инициализация");
        dynTimer = new javax.swing.Timer(100, (java.awt.event.ActionEvent e) -> {
            update(e.getWhen());
        });
    }

    private void start() {
        System.out.println("> Запуск");
        dynTimer.start();
    }

    private void update(long when) {
        System.out.println("Событие: " + when);
    }
}

при запуске в вывод попадает только это:
run:
> Инициализация
> Запуск
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)

и всё... а куда делся таймер? Почему он ни разу тикнул? Почему приложение не осталось запущенным до тех пор, пока я его принудительно не закрою или не остановлю таймер? Как это сделать?
  • Вопрос задан
  • 358 просмотров
Подписаться 1 Оценить 3 комментария
Решения вопроса 1
pi314
@pi314
Президент Солнечной системы и окрестностей
public class Aaa {

    javax.swing.Timer dynTimer;
    public long startTime;
    public static boolean running = true;

    public static void main(String[] args) {
        Aaa p = new Aaa();
        p.init();
        p.start();
        
        while (running) {
            try {
                Thread.sleep(100);
                System.out.println("::: " + running);
            } catch (InterruptedException ie) {
                System.out.println("Child thread interrupted! " + ie);
            }
        }
    }

    private void init() {
        System.out.println("> Инициализация");
        dynTimer = new javax.swing.Timer(100, (java.awt.event.ActionEvent e) -> {
            update(e.getWhen());
        });
    }

    private void start() {
        System.out.println("> Запуск");
        dynTimer.start();
        startTime = new java.util.Date().getTime();
    }

    private void update(long when) {
        System.out.println("Событие: " + (startTime + 1000) + " : " + when + " : " + running);
        if(startTime + 1000 < when) {
        	dynTimer.stop();
        	running = false;
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы