openbare klasse ClearDownService {
privé int.draden;
privé executorService ExecutorService;
openbare ClearDownService (int.draden) {
als (draden < 1="">= 1. „);
}
this.threads = draden;
this.executorService = Executors.newFixedThreadPool (this.threads);
}
// ik uw te veronderstellen herhalingscode wijzigde u wat Inzameling van voorwerpen OrderModel hebt
// dat u gebruikt om iterator te krijgen. Aangezien u JDK 1.5+ gebruikt, zijn veel meer
leesbaar en te handhaven // om Generics te gebruiken in plaats van het gieten van de terugkeer van iterator.next ().
// wijzigde ik ook uw herhalingscode om het ingebouwde foreachconcept te gebruiken.
openbare nietige checkOrders (de orden van de Inzameling) {
// initialiseert klink voor het totale aantal orden, in plaats van draden.
// dit verzekert alle orden worden verwerkt alvorens deze methode voltooit
definitieve CountDownLatch startLatch = nieuwe CountDownLatch (orders.size ());
// aangezien u JDK 1.5+ gebruikt, gemakkelijker te lezen en te handhaven als u generics gebruikt
// en ingebouwde foreach in plaats van iterator
voor (definitief model OrderModel: orde) {
executorService.submit (nieuwe Jaagbaar () {
openbare in werking gestelde leegte () {
probeer {
Tijdschema nu = Calendar.getInstance (TimeZone.getTimeZone („Europa/Londen“));
als (isEligibleForClearDown (model, master.getCleardownFields () .getClearDownReqFrom (), nu)) {
als (model.getOrderFields () .hasParentOrderId ()) {
// voegt alle orden van het Kind aan eindresultaat toe
results.add (model);
} anders {
// voegt ouderorden aan de ouderlijst toe
parentOrders.add (model);
}
}
} tenslotte {
// dat dit zet binnen een definitief blok verzekert het achteloos genoemd wordt
// van om het even welke uitzonderingen die in het lichaam van de methode voorkomen
startLatch.countDown ();
}
}
});
}
probeer {
startLatch.await (); // wacht op alle voorwerpen om verwerking te voltooien
} vangst (InterruptedException e) {
LOGGER.error („Onderbroken Uitzondering terwijl het wachten op de aftelprocedureklink om te beëindigen. “);
}
}
}
|