J'utilise un ThreadPool via ExecutorService. En appelant shutDownNow(), il interrompt tous les threads en cours d'exécution dans le pool. Quand cela arrive, je veux que ces threads abandonnent leurs ressources (connexions socket et db) et meurent simplement, mais sans continuer à exécuter de la logique, par exemple: en insérant quelque chose dans la BD. Quel est le moyen le plus simple d'y parvenir? Bellow est un exemple de code:Java: Autoriser le thread enfant à se tuer sur InterruptedException?
modifier: oublié de mentionner que toutes mes connexions sont libérées par finally
. J'ai juste besoin de m'assurer que cela n'impliquera pas différentes insertions de DB d'une manière fiable.
public void threadTest() {
Thread t = new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(999999);
} catch (InterruptedException e) {
//invoke thread suicide logic here
}
}
});
t.start();
t.interrupt();
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
}
}
semble raisonnable, mais je Je devrais à peu près déclarer toutes les méthodes de mon projet comme 'throws InterruptedException', n'est-ce pas? – Zombies
À moins que vous ne l'attrapiez à un niveau inférieur et que vous rejetiez à la place une exception non cochée. –
Il est dommage que InterruptedException et RemoteException soient des exceptions vérifiées (à mon humble avis c'est-à-dire) –