Bonjour ,
J ' aimerai savoir comment lancer plusieurs threads a la fois svp ?
Je m ' explique , j ' ai un thread appelé crawlerWeb qui permet d ' exécuter un thread par mot clé et chaque progression de thread est représenté par une JprogressBar.
J ' arrive a créer autant de progressbar que de motclé comme ceci:
ma méthode addThread()qui crée le thread
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Iterator<String> parcoursMotsClés = confParam.getSite().getListeMotsCles().iterator(); while (parcoursMotsClés.hasNext()) { Object o = parcoursMotsClés.next(); if (o instanceof String) { container.initaliserProgressBar(o.toString());// creer une progressbar pour chaque mot clé container.repaint(); container.revalidate(); container.updateUI(); } } thm.addThread(confParam.getSite()); thm.lancementThread();
ma méthode lancementThread qui me lance les threads( autant de thread que de motclé)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public void addThread(SiteCrawle site) { for(String motCle :site.getListeMotsCles()) { cw=new CrawlerWeb(motCle, site.getNomDomaine(), site.getProfondeur()); //cree un thread par mot clé threads.add(cw); } }
et c ' est la ou j ' ai un probleme , car lorsque les threads se lancent , les progressBar associées aux threads doivent se remplir , or seulement la dernière progressbar crée se remplit!(comme si il n ' y avait qu ' une seule progressBar associée aux threads)
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 public void lancementThread() { ThreadProgressBar thProgress; for(CrawlerWeb cwe: threads) { thProgress=new ThreadProgressBar(container,cwe); // thread progressbar thProgress.start(); cwe.start(); } }
voici la classe qui gere le remplissage de mes progressbar
Comment régler ce problème?
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 private JPanelContainer container; private CrawlerWeb cw; public ThreadProgressBar(JPanelContainer container,CrawlerWeb cw) { super(); this.container = container; this.cw = cw; } public void run() { while(cw.getAvancementThread() < 100) { container.getBar().setValue((int) cw.getAvancementThread()); try { Thread.sleep(1000); } catch (InterruptedException ex) { System.out.println("Failed"); } } container.getBar().setValue(100); } }
Merci beaucoup pour votre aide
Partager