Bonjour,
Je dois manipuler des Threads dans mon projet mais j'ai un peu de mal à appréhender les choses.
J'ai une premier classe Parsing qui est implements Runnable
Elle écrit un document xml puis l'envoi sur une adresse jsp puis lance son thread
t = new Thread();
t.start();
Ceci m'exécute alors :
Et la classe TimeTask qui me permet d'arrêter mon Thread du Parsing au bout de 1 minutes.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public void run() { fin = true; SAXBuilder sxb = new SAXBuilder(); try { while(fin){ myTimeTask= new TimeTask(t1,6000); myTimeTask.start(); try { URLConnection urlConnection = url.openConnection(); urlConnection.connect(); InputStream stream = urlConnection.getInputStream(); xmlDocument = sxb.build(stream); if(xmlDocument != null) { fin=false; } } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { Logger.getLogger(LectureXML.class.getName()).log(Level.SEVERE, null, e); e.printStackTrace(); } } LectureXML.identification(xmlDocument); myTimeTask.interrupt(); } catch (Exception ex) { Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex); } }
et j'ai déclaré ma méthode identification de LectureXML en synchronized.
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 class TimeTask { private long timetask =0; private final Thread thread; TimeTask(Thread t1, int i) { thread = t1; timetask = i; } void start() { try { Thread.sleep(timetask); Parsing.stop(); thread.interrupt(); } catch (InterruptedException ex) { Logger.getLogger(TimeTask.class.getName()).log(Level.SEVERE, null, ex); } } void interrupt() { this.interrupt(); } }
mais mon soucis intervient sur comment interrompre mon Thread du Parsing, et comment l'identifier pour interrompre le bon? Car il faut savoir que ma classe Parsing sera appelée plusieurs fois, entrainant donc une multitude de Thread (qui eux même créer un Thread timer).
merci à vous (en espérant avoir été assez clair)![]()
Partager