@Override
  public void pushToQueue(DriverTask task) {
    checkArgument(task != null, "DriverTask to be pushed is null");
    // Push tasks with the highest priority(Currently, only ShowQuery related tasks) into
    // highestPriorityLevelQueue directly.
    if (task.isHighestPriority()) {
      highestPriorityLevelQueue.offer(task);
      return;
    }

    int level = task.getPriority().getLevel();
    if (levelWaitingSplits[level].isEmpty()) {
      // Accesses to levelScheduledTime are not synchronized, so we have a data race
      // here - our level time math will be off. However, the staleness is bounded by
      // the fact that only running splits that complete during this computation
      // can update the level time. Therefore, this is benign.
      long level0Time = getLevel0TargetTime();
      long levelExpectedTime = (long) (level0Time / Math.pow(levelTimeMultiplier, level));
      long delta = levelExpectedTime - levelScheduledTime[level].get();
      levelScheduledTime[level].addAndGet(delta);
    }
    levelWaitingSplits[level].offer(task);
  }
During periods of time when a level has no waiting splits, it will not accumulate scheduled
time and will fall behind relative to other levels.

<p>This can cause temporary starvation for other levels when splits do reach the
previously-empty level.

<p>To prevent this we set the scheduled time for levels which were empty to the expected
scheduled time.
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java