Bonjour,
Je suis en gros dans le cas suivant :
En réalité dans mon cas à la place de sleep() j'ai une fonction qui fait tout plein de chose et qui à un temps d'exécution aléatoire.class MonThread extends Thread {
MonThread() {}
public void run() {
try {
// instructions avant commande bloquante
Thread.sleep(10000);
// instructions après commande bloquante
}
catch(InterruptedException ie) {}
}
}
Je voudrais à n'importe quel moment stopper ce Thread. J'ai pensé à la solution qui consiste à créer une fonction qui lève une interruption pour rentrer dans le catch :
Cependant l'exception n'est levée qu'après la fin de l'exécution de mon instruction bloquante. Ce qui dans mon cas n'est pas bon car je voudrais qu'au moment où j'ai décide de stopper mon Thread, il s'arrête, et pas qu'il s'arrête à la fin d'un instruction ayant un temps d'exécution aléatoire.class MonThread extends Thread {
private boolean fin = false;
MonThread() {}
public void run() {
try {
// instructions avant commande bloquante
testFin();
Thread.sleep(10000);
testFin();
// instructions après commande bloquante
}
catch(InterruptedException ie) {}
}
public void testFin() throws InterruptedException {
if (fin == true) {
throw new InterruptedException();
}
}
public void signalerFin() {
fin = true;
}
}
Si vous avez des idées, faite passer svp
dieZ
Partager