classe pública ClearDownService {
linhas confidenciais do int;
executorService confidencial de ExecutorService;
ClearDownService público (linhas do int) {
se (linhas < 1="">= 1. “);
}
this.threads = linhas;
this.executorService = Executors.newFixedThreadPool (this.threads);
}
// I modificou seu código da iteração para supr que você tem alguma coleção de objetos de OrderModel
// que você se está usando para começ o iterator. Desde que você está usando JDK 1.5+, seu muito mais
// legível e maintainable para usar produtos genéricos em vez de moldar o retorno de iterator.next ().
// I igualmente modificou seu código da iteração para usar a construção interna do foreach.
checkOrders vagos do público (ordens de coleção) {
// inicializa a trava para o número total de ordens, em vez das linhas.
// que isto se assegura de que todas as ordens estejam processadas antes que este método terminar
startLatch final de CountDownLatch = CountDownLatch novo (orders.size ());
// desde que você está usando JDK 1.5+, mais fácil ler e manter se você usa produtos genéricos
// e o foreach interno em vez do iterator
para (modelo final de OrderModel: ordens) {
executorService.submit (praticável novo () {
o vácuo do público funciona () {
tentativa {
Calendário agora = Calendar.getInstance (TimeZone.getTimeZone (“Europa/Londres”));
se (isEligibleForClearDown (modelo, master.getCleardownFields () .getClearDownReqFrom (), agora)) {
se (model.getOrderFields () .hasParentOrderId ()) {
// adiciona todas as ordens da criança ao resultado final
results.add (modelo);
} mais {
// adiciona ordens do pai à lista de pai
parentOrders.add (modelo);
}
}
} finalmente {
// que põr este finalmente em um bloco assegura-se de que começ chamado de qualquer maneira
// de algumas exceções que ocorrerem no corpo do método
startLatch.countDown ();
}
}
});
}
tentativa {
startLatch.await (); espera de // para todos os objetos ao processamento completo
} prendedor (InterruptedException e) {
LOGGER.error (“exceção interrompida ao esperar a trava da contagem regressiva a end.");
}
}
}
|