clase pública ClearDownService {
hilos de rosca privados de la internacional;
executorService privado de ExecutorService;
ClearDownService público (hilos de rosca de la internacional) {
si (hilos de rosca < 1="">= 1. “);
}
this.threads = hilos de rosca;
this.executorService = Executors.newFixedThreadPool (this.threads);
}
// I modificó su código de la iteración para asumir que usted tiene cierta colección de objetos de OrderModel
// que usted está utilizando para conseguir el iterator. Puesto que usted está utilizando JDK 1.5+, su mucho más
// legible y conservable utilizar productos genéricos en vez de echar la vuelta de iterator.next ().
// I también modificó su código de la iteración para utilizar la construcción incorporada del foreach.
checkOrders vacíos del público (órdenes de colección) {
// inicializa el cierre para el número total de órdenes, en vez de los hilos de rosca.
// que esto se asegura que todas las órdenes estén procesadas antes de que este método termine
startLatch final de CountDownLatch = nuevo CountDownLatch (orders.size ());
// puesto que usted está utilizando JDK 1.5+, más fácil leer y mantener si usted utiliza productos genéricos
// y el foreach incorporado en vez del iterator
para (modelo final de OrderModel: órdenes) {
executorService.submit (nuevo Runnable () {
vacío del público funcionado con () {
intento {
Calendario ahora = Calendar.getInstance (TimeZone.getTimeZone (“Europa/Londres”));
si (isEligibleForClearDown (modelo, master.getCleardownFields () .getClearDownReqFrom (), ahora)) {
si (model.getOrderFields () .hasParentOrderId ()) {
// agrega todas las pedidos del niño al resultado final
results.add (modelo);
} {
// agrega pedidos del padre a la lista de padre
parentOrders.add (modelo);
}
}
} finalmente {
// que pone esto en finalmente un bloque se asegura que consigue llamado cueste lo que cueste
// de cuaesquiera excepciones que ocurran en el cuerpo del método
startLatch.countDown ();
}
}
});
}
intento {
startLatch.await (); espera de // para todos los objetos al proceso completo
} retén (InterruptedException e) {
LOGGER.error (“excepción interrumpida mientras que espera el cierre de la cuenta descendiente a end.");
}
}
}
|