lancer plusieurs threads a la fois
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:
Code:
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 addThread()qui crée le thread
Code:
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);
}
} |
ma méthode lancementThread qui me lance les threads( autant de thread que de motclé)
Code:
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();
}
} |
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)
voici la classe qui gere le remplissage de mes progressbar
Code:
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);
}
} |
Comment régler ce problème?
Merci beaucoup pour votre aide