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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
public class Stage extends Thread {
private JFrame parent = null;
private FenetreTests fenetreTests = null;
private Grammaire grammaire = null;
private VeuillezPatienter vp;
public Stage(JFrame parent, FenetreTests fenetreTests, Grammaire grammaire) {
this.parent = parent;
this.fenetreTests = fenetreTests;
this.grammaire = grammaire;
ready = false;
}
public void run() {
// Cette fonction va inserer les ressources. En moyenne cela prend 30s à 1min, d'où ce thread.
...
int nbTasks = ressources.size();
vp = new VeuillezPatienter(parent, "Insertion des ressources...", nbTask);
...
for(,,) { ... vp.updateProgressBar(null); ... }
vp.destroyProgressBar();
ready = true;
System.out.println("Construction de la liste des descripteurs terminée.");
}
...
public void lancerAlgo(ArrayList entrees, int tailleMiniMots, int tolerance, int seuil) {
Algo algo = new Algo(entrees, tailleMiniMots, tolerance, seuil);
algo.start();
}
class Algo extends Thread {
private ArrayList entrees = new ArrayList();
private int tailleMiniMots = 4;
private int tolerance = 1;
private int seuil = 70;
public Algo(ArrayList entrees, int tailleMiniMots, int tolerance, int seuil) {
this.entrees = entrees;
this.tailleMiniMots = tailleMiniMots;
this.tolerance = tolerance;
this.seuil = seuil;
}
public void run() {
// Cet algo dépend de la taille du fichier, mais une ligne prend en moyenne 2 secondes...
int nbTask = entrees.size();
vp = new VeuillezPatienter(parent, "Analyse en cours", nbTask);
for(int i=0; i<entrees.size(); i++) {
ArrayList resultatsUneEntree = traiterUneEntree((String) entrees.get(i), tailleMiniMots, tolerance, seuil);
// l'affichage au fur et à mesure montre aussi au client que cela n'a pas planté
fenetreTests.afficherResultats(resultatsUneEntree);
fenetreTests.afficherResultats(null);
vp.updateProgressBar(null);
}
vp.destroyProgressBar();
}
}
...
} |
Partager