codice categoria pubblico ClearDownService {
filetti riservati di int;
executorService riservato di ExecutorService;
ClearDownService pubblico (filetti di int) {
se (filetti < 1="">= 1. “);
}
this.threads = filetti;
this.executorService = Executors.newFixedThreadPool (this.threads);
}
// I ha modificato il vostro codice di ripetizione per presupporre che aveste certa accumulazione degli oggetti di OrderModel
// che state usando per ottenere il iterator. Poiché state usando il JDK 1.5+, relativo molto più
// leggibile e mantenibile usare i Generics invece di lanciare il ritorno di iterator.next ().
// I inoltre ha modificato il vostro codice di ripetizione per usare la costruzione incorporata del foreach.
checkOrders vuoti del pubblico (ordini di accumulazione) {
// inizializza il fermo per il numero totale degli ordini, anziché i filetti.
// questo assicura che tutti gli ordini siano procedati prima che questo metodo completi
startLatch finale che di CountDownLatch = nuovo CountDownLatch (orders.size ());
// poiché state usando il JDK 1.5+, più facile leggere ed effettuare se usate i generics
// e il foreach incorporato anziché il iterator
per (modello finale di OrderModel: ordini) {
executorService.submit (nuovo praticabile () {
vuoto del pubblico funzionato () {
prova {
Calendario ora = Calendar.getInstance (TimeZone.getTimeZone (“Europa/Londra„));
se (isEligibleForClearDown (modello, master.getCleardownFields () .getClearDownReqFrom (), ora)) {
se (model.getOrderFields () .hasParentOrderId ()) {
// aggiunge tutti gli ordini del bambino al risultato finale
results.add (modello);
} altrimenti {
// aggiunge gli ordini del genitore alla lista di genitore
parentOrders.add (modello);
}
}
} infine {
// che mette questo infine in un blocco assicura che ottenga denominato con noncuranza
// di qualsiasi eccezioni che si presentano nel corpo del metodo
startLatch.countDown ();
}
}
});
}
prova {
startLatch.await (); aspettare di // tutti gli oggetti all'elaborazione completa
} fermo (InterruptedException e) {
LOGGER.error (“eccezione interrotta mentre aspettando il fermo di conto alla rovescia a end.");
}
}
}
|