allmänhet klassificerar ClearDownService {
privata int-trådar;
privat ExecutorService executorService;
offentliga ClearDownService (int-trådar) {
om (trådar < 1="">= 1. ”);
}
this.threads = trådar;
this.executorService = Executors.newFixedThreadPool (this.threads);
}
// I ändrade din upprepning kodifierar för att anta att du har någon samling av OrderModel anmärker
// att du använder för att få iteratoren. Sedan du använder JDK 1.5+ som är dess mycket mer
försvarbar // som är läslig och att använda Generics i stället för rollbesättning returen av iterator.next ().
// I ändrade också din upprepning kodifierar för att använda den inbyggde foreachtankeskapelsen.
offentliga utan laga kraft checkOrders (samlingen beställer) {
// initialiserar låser för slutsumman numrerar av beställer, i stället för trådar.
// som detta ser till att allt beställer bearbetas, för denna metod avslutar
finalCountDownLatch startLatch = nya CountDownLatch (orders.size ());
//, sedan du använder JDK 1.5+ som är lättare att läsa och underhålla, om du använder generics
// och den inbyggde foreachen i stället för iteratoren
för (finalen OrderModel modellerar: beställer) {
executorService.submit (nya Runnable () {
offentligt annullera körningen () {
försök {
Kalender nu = Calendar.getInstance (TimeZone.getTimeZone (”Europa/London”));
om (isEligibleForClearDown (modellera, master.getCleardownFields () .getClearDownReqFrom (), nu)), {
om (model.getOrderFields () .hasParentOrderId ()) {
// tillfogar allt barn beställer till finalresultatet
results.add (modellera);
} annars {
// tillfogar föräldern beställer till föräldern listar
parentOrders.add (modellera);
}
}
} slutligen {
// som sätter denna i ett kvarter, ser till slutligen att det får kallat utan hänsyn
// av några undantag som uppstår i förkroppsliga av metoden
startLatch.countDown ();
}
}
});
}
försök {
startLatch.await (); den // alla väntan för anmärker för att avsluta att bearbeta
} fånga (InterruptedException e) {
LOGGER.error (”avbrutna undantagsstunder som väntar nedräkningen, låser för att avsluta. ”);
}
}
}
|