allgemeine Kategorie ClearDownService {
private int-Gewinde;
privates ExecutorService executorService;
allgemeines ClearDownService (int-Gewinde) {
wenn (Gewinde < 1="">= 1. „);
}
this.threads = Gewinde;
this.executorService = Executors.newFixedThreadPool (this.threads);
}
// I änderte Ihren Wiederholungcode, um anzunehmen, dass Sie irgendeine Ansammlung OrderModel Gegenstände haben
//, dass Sie pflegen, um das iterator zu erhalten. Da Sie JDK 1.5+ benutzen, sein viel mehr
// lesbar und haltbar Generics benutzen, anstatt, die Rückkehr von iterator.next zu werfen ().
// I änderte auch Ihren Wiederholungcode, um das eingebaute foreach Konstruieren zu benutzen.
Öffentlichkeit leere checkOrders ( Abholaufträge) {
// initialisieren Verriegelung für die Gesamtzahl Aufträgen, anstelle von den Gewinden.
//, das dieses sicherstellt, dass alle Aufträge verarbeitet werden, bevor diese Methode abschließt
abschließendes CountDownLatch startLatch = neues CountDownLatch (orders.size ());
//, da Sie JDK 1.5+ benutzen, einfacher, zu lesen und beizubehalten, wenn Sie Generics benutzen
// und das eingebaute foreach anstelle vom iterator
für (abschließendes OrderModel Modell: Aufträge) {
executorService.submit (neues jagdbares () {
Öffentlichkeitslücke laufen gelassen () {
Versuch {
Kalender jetzt = Calendar.getInstance (TimeZone.getTimeZone („Europa/London“));
wenn (isEligibleForClearDown (Modell, master.getCleardownFields () .getClearDownReqFrom (), jetzt)) {
wenn (model.getOrderFields () .hasParentOrderId ()) {
// fügen alle Kindaufträge Endergebnis hinzu
results.add (Modell);
} sonst {
// fügen Elternteilaufträge der Elternteilliste hinzu
parentOrders.add (Modell);
}
}
} schließlich {
//, das dieses in einen schließlich Block einsetzt, stellt sicher, dass er gedankenlos benannt erhält
// irgendwelcher Ausnahmen, die im Körper der Methode auftreten
startLatch.countDown ();
}
}
});
}
Versuch {
startLatch.await (); //-Wartezeit für alle Gegenstände zur kompletten Verarbeitung
} Fang (InterruptedException e) {
LOGGER.error („unterbrochene Ausnahme bei der Aufwartung der Count-downverriegelung bis end.");
}
}
}
|