Bonjour à tous,
Je veux faire un truc assez simple à expliquer mais plus difficile à mettre en place!
J'ai un traitement (qui est une recherche). Cette recherche se fait via l'utilisation d'une méthode dont j'ai pas assez (pas au code).
Ca se fait en une ligne: exemple: String retour = recherche("Mot");
Mais quelques fois cette recherche a un probleme (sans retour de probleme, donc pas possible d'utiliser un try/catch). Ce probleme, je en le conais pas (exemple: reponse TROP longue d'un serveur, une boucle infini,...)
Je souhaite arreter le traitement aprsè X secondes. Pour ce faire, j'ai pensé utiliser un thread.
Mais la façon que j'ai eu de coder ne va pas car le thread peut s'arreter qu'une fois la tache stoppée.
Comment puis-je faire pour arreter cette recherche deja lancée avec un thread? (ou une autre manière)?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Thread th = new Thread(){ public synchronized void run(){ try{ sleep(timeout); }catch(Exception e){e.printStackTrace();} if (recu == false) stop = true; } }; try { synchronized(this) { if (!stop) { String retour = recherche("Mot"); } if (stop) { System.err.println("\nHors delai: " +timeout + " ms depasse"); } } } catch (IOException e) { }
D'avance merci à tous,
PS: désolé pour les tabulations infinies, mais c'est le copier/coller
Partager