java.util.concurrent.RejectedExecutionException:被java.util.concurrent.ThreadPoolExecutor拒绝

我集成了执行程序服务,可以同时执行任务。没有未来,一切都会运转良好。为了检查执行程序线程是否完成任务并且没有失败,我添加了Future并尝试检查失败状态。下面是代码示例

     val pool = Executors.newFixedThreadPool(THREAD_COUNT)
implicit val context = ExecutionContext.fromExecutorService(pool)

var index = 0
while (index < employeeJobdataList.size()){

  val startIndex = index
  var endIndex = index + BATCH_THRESHOLD

  if(startIndex + BATCH_THRESHOLD >= employeeJobdataList.size()){
    endIndex = employeeJobdataList.size()
  }
  val future = Future({
    upsertsFailedBatches.addAll(batchSaveInDDB(employeeJobdataList.subList(startIndex,endIndex),failedList))
  })
  future.onFailure{case e: Throwable => errorFromExecutorService.append(e.toString)}
  index = index + BATCH_THRESHOLD
}

context.shutdown()
while (!context.isTerminated()) {
  Thread.sleep(THREAD_SLEEP_TIME_MILLI)
}

错误详情:

java.util.concurrent.RejectedExecutionException:任务scala.concurrent.impl.CallbackRunnable@74a938eb从java.util.concurrent.ThreadPoolExecutor@5e5fcd94拒绝了[关闭,池大小= 10,活动线程= 10,排队的任务= 87323 ,已完成的任务= 213] 在java.util.concurrent.ThreadPoolExecutor $ AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063) 在java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) 在java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379) 在scala.concurrent.impl.ExecutionContextImpl $$ anon $ 1.execute(ExecutionContextImpl.scala:136) 在scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:44) 在scala.concurrent.impl.Promise $ DefaultPromise.tryComplete(Promise.scala:252) 在scala.concurrent.Promise $ class.complete(Promise.scala:55) 在scala.concurrent.impl.Promise $ DefaultPromise.complete(Promise.scala:157) 在scala.concurrent.impl.Future $ PromiseCompletingRunnable.run(Future.scala:23) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748)

帮助我了解如何摆脱这种情况

iCMS 回答:java.util.concurrent.RejectedExecutionException:被java.util.concurrent.ThreadPoolExecutor拒绝

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1859268.html

大家都在问