docs: @SuppressWarnings("squid:S2142")
      @Override
      public void run() {
          try {
              log.finest("Starting IOBalancer thread");
              long nextRebalanceMs = currentTimeMillis() + balancerIntervalMs;
              while (!shutdown) {
                  for (; ; ) {
                      long maxPollDurationMs = nextRebalanceMs - currentTimeMillis();
                      Runnable task = maxPollDurationMs <= 0 ? workQueue.poll() : workQueue.poll(maxPollDurationMs, MILLISECONDS);
                      if (task == null) {
                          // we are finished with taking task from the queue, lets
                          // do a bit of rebalancing.
                          break;
                      }
                      task.run();
                  }
  
                  ioBalancer.rebalance();
                  nextRebalanceMs = currentTimeMillis() + balancerIntervalMs;
              }
          } catch (InterruptedException e) {
              log.finest("IOBalancer thread stopped");
              //this thread is about to exit, no reason restoring the interrupt flag
              ignore(e);
          } catch (Throwable e) {
              log.severe("IOBalancer failed", e);
          }
      }