@Override
    public void advanceClock(final long timeoutMs) throws InterruptedException {
        TimerTaskList bucket = delayQueue.poll(timeoutMs, TimeUnit.MILLISECONDS);
        if (Objects.nonNull(bucket)) {
            writeLock.lock();
            try {
                while (Objects.nonNull(bucket)) {
                    timingWheel.advanceClock(bucket.getExpiration());
                    bucket.flush(this::addTimerTaskEntry);
                    bucket = delayQueue.poll();
                }
            } finally {
                writeLock.unlock();
            }
        }
    }
Instantiates a new System timer.

@param executorName the executor name
@param tickMs       the tick ms
@param wheelSize    the wheel size
@param startMs      the start ms
shenyu-common/src/main/java/org/apache/shenyu/common/timer/HierarchicalWheelTimer.java