Мне нужен пул потоков для запуска один раз в час. Тем не менее, он не ведет себя так, как ожидалось. Он выполняется в течение пары часов, а затем остановился. И через несколько часов он снова начал работать.
Каждый поток должен прочитать и вычислить около 2000 записей из mongodb, что, я думаю, достаточно быстро, чтобы закончить в течение нескольких минут.
Как решить эту проблему?
Планировщик
val interval = 1 * 60 * 60
actorySystem.scheduler.schedule(10.seconds, interval.second, actor, "AuditActor")
ThreadPool
int totleSize = 1000;
int preprocessedNumberOfData = 100;
int pageCount = totleSize / preprocessedNumberOfData;
ExecutorService pool = Executors.newFixedThreadPool(pageCount);
try {
if (pool == null) {
return;
}
for (int i = 1; i <= pageCount; i++) {
Future<?> future = pool.submit(new task(xxx,i,xxxx,xxxx));
}
catch (Exception e) {
e.printStackTrace();
play.Logger.error(e.getMessage());
}finally{
pool.shutdown();
}