@Override
    public void add(final TimerTask timerTask) {
        if (Objects.isNull(timerTask)) {
            throw new NullPointerException("timer task null");
        }
        this.readLock.lock();
        try {
            start();
            long millis = TimeUnit.NANOSECONDS.toMillis(System.nanoTime());
            this.addTimerTaskEntry(new TimerTaskList.TimerTaskEntry(this, timerTask, timerTask.getDelayMs() + millis));
        } finally {
            this.readLock.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