społeczeństwo klasowy ClearDownService {
intymny int nić;
intymny ExecutorService executorService;
jawny ClearDownService (int nić) {
jeżeli (nić < 1="">= 1. ");
}
this.threads = nić;
this.executorService = Executors.newFixedThreadPool (this.threads);
}
// I modyfikować twój iteracja kod ty mieć niektóre Kolekcja OrderModel przedmiot
// że ty używać the iterator. Ponieważ ty używać JDK 1.5+, swój dużo bardziej
// iterator.next i iterator.next Generics zamiast the powrót iterator.next ().
// I także modyfikować twój iteracja kod the obmurowany foreach konstrukcja.
jawny kawitacyjny checkOrders (Inkasowy rozkaz) {
// Initialize zapadka dla the sumaryczny liczba rozkaz, zamiast nić.
// Metoda zapewniać wszystkie rozkaz przetwarzać zanim ten metoda uzupełniać
definitywny CountDownLatch startLatch = nowy CountDownLatch (orders.size ());
// ponieważ ty używać JDK 1.5+, łatwy i jeżeli ty używać generics
// i the obmurowany foreach zamiast the iterator
dla (definitywny OrderModel model: rozkaz) {
executorService.submit (nowy Runnable () {
jawny kawitacyjny bieg () {
próba {
Kalendarzowy teraz = Calendar.getInstance (TimeZone.getTimeZone ("Europa/Londyn"));
jeżeli (isEligibleForClearDown (model, master.getCleardownFields () .getClearDownReqFrom (), teraz)) {
jeżeli (model.getOrderFields () .hasParentOrderId ()) {
// dodawać wszystkie Dziecko rozkaz rezultat końcowy
results.add (model);
} inny {
// dodawać mateczny rozkaz the mateczny lista
parentOrders.add (model);
}
}
} w końcu {
// ono w w końcu blokowy zapewniać ono dostawać dzwonić dzwonić
// jakaś wyjątek który zdarzać się w the ciało the metoda
startLatch.countDown ();
}
}
});
}
próba {
startLatch.await (); // czekać na wszystkie przedmiot zupełny przerób
} chwyt (InterruptedException e) {
LOGGER.error ("Przerywać Wyjątek podczas gdy czekać the odliczanie zapadka end.");
}
}
}
|