1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 6: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
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."); } } }