@Override
    public void run() {
      try (NamedThread namedThread = new NamedThread("Scheduled Query Poller")) {
        while (!context.executor.isShutdown()) {
          int origResets = forcedScheduleCheckCounter.get();
          if (usedExecutors.get() < context.getNumberOfExecutors()) {
            try {
              ScheduledQueryPollResponse q = context.schedulerService.scheduledQueryPoll();
              if (q.isSetExecutionId()) {
                context.executor.submit(new ScheduledQueryExecutor(q));
                // skip sleep and poll again if there are available executor
                continue;
              }
            } catch (Throwable t) {
              LOG.error("Unexpected exception during scheduled query submission", t);
            }
          }
          try {
            sleep(context.getIdleSleepTime(), origResets);
          } catch (InterruptedException e) {
            LOG.warn("interrupt discarded");
          }
        }
      }
    }
The poller is responsible for checking for available scheduled queries.

It also handles forced wakeup calls to reduce the impact that the default check period might be minutes.
There might be only 1 running poller service at a time in a hiveserver instance.
ql/src/java/org/apache/hadoop/hive/ql/scheduled/ScheduledQueryExecutionService.java