newFixedThreadPool не выполняется время от времени - PullRequest
0 голосов
/ 30 октября 2018

Мне нужен пул потоков для запуска один раз в час. Тем не менее, он не ведет себя так, как ожидалось. Он выполняется в течение пары часов, а затем остановился. И через несколько часов он снова начал работать.

Каждый поток должен прочитать и вычислить около 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();
}
...