Очистка консольного приложения Java - PullRequest
0 голосов
/ 29 марта 2012

У меня есть игровой бот, который работает через консоль.Я не думаю, что я собираюсь кодировать графический интерфейс для этого, но я хотел бы иметь возможность закрыть программу без CTRL + C, потому что это просто прерывает мою программу вместо правильной очистки кода и гарантирует, что нет утечек.

Должен ли я использовать некоторые виды привязок клавиш или я должен сделать графический интерфейс?Или как я могу пойти по этому поводу?

Ответы [ 2 ]

5 голосов
/ 29 марта 2012

Я думаю, для этого отключающий крюк .

Runtime.getRuntime().addShutdownHook( new Thread() { 
    @Override 
    public void run() { 
        System.out.println("Application shutdown"); 
    }
});
1 голос
/ 29 марта 2012

Дэвид ответил хорошо.Это может хорошо сработать для вас.

Я обычно предпочитаю не намеренно прерывать процесс, а затем обнаруживать, что он останавливается, чтобы избежать висячих операций.Так что я, вероятно, сделал бы больше как:

Обрабатываете ли вы консольные вводы по мере их ввода?Если это так, вы можете просто получить консольную команду, которая сообщает приложению о завершении работы, и проверить это в любом процессе обработки входов консоли.Или, если вы имеете в виду, что приложение просто запускается без ввода данных пользователем, вы можете просто периодически проверять, является ли буфер консоли пустым (Console.reader (). Ready ()), и, если нет, читать консоль и смотреть, если это выходкоманда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...