Ci-dessous un programme qui appelle en boucle la méthode processSomething(...) avec un sleep de 5 secondes.
Il faut donc traiter les user interrupts dans deux cas :
- le cas où l'interruption se fait lors de l'exécution d'un processSomething(...)
- et le cas où l'interruption se fait lors du sleep de 5 secondes.
public class StopSample{
public static boolean running = true;
public static void main(String [] args){
new StopSample().processMain();
}
public void processMain() {
// si on interrompt durant le processSomething(...) plus bas (cas 1) :
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
StopSample.running = false;
logger.info("Arret du programme suite à un user interrupt");
}
});
try {
for (; running;) {
processSomething(...);
Thread.sleep(5000);
}
} catch (InterruptedException e) {
// si on interrompt durant le Thread.sleep (cas 2) :
logger.info("Arret du programme suite à un user interrupt");
System.exit(0);
}
}
Aucun commentaire:
Enregistrer un commentaire