docs: public void run() {
          try {
  
              Queue<ParallelTask> waitQ = ParallelTaskManager.getInstance()
                      .getWaitQ();
  
              logger.debug(
                      "TASK_WAIT_Q: Current waitQ has task count: {} in Thread scheduler",
                      waitQ.size());
  
              final ParallelTask task = waitQ.peek();
              if (task != null) {
  
                  int totalUsedCapacityBefore = ParallelTaskManager.getInstance()
                          .getTotalUsedCapacity();
  
                  int capacityThisTask = task.capacityUsed();
                  int capacityRemain = ParallecGlobalConfig.maxCapacity
                          - totalUsedCapacityBefore;
                  int totalUsedCapacityNew = totalUsedCapacityBefore
                          + capacityThisTask;
  
                  logger.info(
                          "TASK_WAIT_Q: Exists Task in WaitQ with head of queue task id {}"
                                  + "....Current used capacity {}, and remaining capacity is {}",
                          task.getTaskId(), totalUsedCapacityBefore,
                          capacityRemain);
                  // condition to add to the in progress map
                  if (totalUsedCapacityNew <= ParallecGlobalConfig.maxCapacity) {
                      logger.info(
                              "TASK_WAIT_Q: Sufficent capacity. Execute new task from wait queue. Task capacity {}"
                                      + " with total used capacity is now {}, capacityRemain will be {}",
                              capacityThisTask, totalUsedCapacityNew,
                              ParallecGlobalConfig.maxCapacity
                                      - totalUsedCapacityNew);
  
                      waitQ.poll(); // dequeue
                      Runnable taskRunnable = new Runnable() {
                          @Override
                          public void run() {
                              ParallelTaskManager.getInstance()
                                      .generateUpdateExecuteTask(task);
                          }
                      };
                      new Thread(taskRunnable).start();
                  } else {
                      logger.info(
                              "TASK_WAIT_Q: Skip execution new task. Insufficent capacity. "
                                      + "Head of queue task needs capacity {}. However capacityRemain is only {}.",
                              capacityThisTask, capacityRemain);
                  }
  
              }
  
          } catch (Exception e) {
              logger.error("TASK_WAIT_Q: fail in EvalTaskInWaitQRunner ", e);
          }
      }