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
| List<LivrableVO> fichiers;
private void genererFichiers() {
try {
fichiers = gestionFichiersService.recupererFichiersByEtat(Etat.EXTRAIT);
if ((fichiers != null) && (fichiers.size() > 0)) {
int nbFichiers = fichiers.size();
// Calcul du nombre de thread à lancer
int nbThreads = nbLivrables / 2;
if (nbThreads > NB_THREAD_MAX) {
nbThreads = NB_THREAD_MAX;
}
LOG.debug("Lancement de " + nbThreads + " threads...");
threads = new Thread[nbThreads];
int nb = 0;
for (nb = 0; nb < nbThreads; nb++) {
LOG.debug("Lancement thread n°" + (nb + 1));
threads[nb] = new Thread(new ThreadRelookingFacture());
threads[nb].start();
}
// On attend que chaque thread ait finit
for (nb = 0; nb < nbThreads; nb++) {
threads[nb].join();
}
}
} catch (InterruptedException ex) {
LOG.error(ex);
}
LOG.debug("Fin génération des fichiers");
}
private synchronized LivrableVO getFacture() {
if ((fichiers != null) && (fichiers.size() > 0)) {
LivrableVO livrableVO = fichiers.get(0);
fichiers.remove(0);
return livrableVO;
}
return null;
}
public class ThreadRelookingFacture extends Thread {
public void run() {
LivrableVO livrableVO = getFichier();
if (livrableVO != null) {
while (livrableVO != null) {
try {
relookingApp.genererFichier(livrableVO, false);
} catch (FunctionnalException ex) {
LOG.error(ex);
} catch (TechnicalException ex) {
LOG.error(ex);
}
livrableVO = getFacture();
}
}
}
} |
Partager