Como capturar a tecla CTRL+C em aplicativos de console feito em Java


ScreenShot104 Qualquer aplicativo que roda em um console (seja MS-DOS ou Linux) pode ser finalizado ao pressionar CTRL+C. O problema é que este procedimento simplesmente ‘mata’ o processo e finaliza a aplicação bruscamente. Talvez seja necessário que sua aplicação termine algum procedimento como fechar uma conexão com o banco de dados, ou finalizar a gravação de algum arquivo antes de ser fechado. Em Java você consegue capturar o fechamento de uma aplicação de console através do CTRL+C utilizando o método addShutDownHook.

Rode o exemplo e teste:

public class InterruptApp {

public InterruptApp()
{
Runtime.getRuntime().addShutdownHook(new ShutDownHook());
System.out.println("Starting...");
while(true)
{
try {
System.out.println("Press CTRL+C...");
Thread.sleep(1*1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
new InterruptApp();
}

class ShutDownHook extends Thread
{
public void run()
{
System.out.println("Aplication Stoped");
}
}

}

Últimos 5 artigos de Eduardo Costa

Sobre Eduardo Costa

De Campinas-SP, bacharel em Sistema de Informação pela Anhanguera Educacional e pós graduado no curso de MBA em Gestão de Projetos e Metodologia do Ensino Superior. Atualmente trabalha como arquiteto e desenvolvedor Java em empresa de desenvolvimento de software de suporte a tomada de decisão, além de ministrar aulas de Orientação a Objeto, Linguagem Java e XML. Já atuou como líder técnico, coordenador de produto e analista de negócios.

Deixe uma resposta