Bonjour,
Je suis en gros dans le cas suivant :
Citation :
class MonThread extends Thread {
MonThread() {}
public void run() {
try {
// instructions avant commande bloquante
Thread.sleep(10000); // instructions après commande bloquante
}
catch(InterruptedException ie) {}
}
}
|
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.
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 :
Citation :
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;
}
}
|
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.
Si vous avez des idées, faite passer svp
dieZ