public void expire() {
            if (!compareAndSetState(ST_INIT, ST_EXPIRED)) {
                return;
            }

            try {
                task.run(this);
            } catch (Throwable t) {
                if (LOG.isWarnEnabled()) {
                    LOG.warn("An exception was thrown by " + TimerTask.class.getSimpleName() + '.', t);
                }
            }
        }
Calculate goal nanoTime from startTime and current tick number,
then wait until that goal has been reached.

@return Long.MIN_VALUE if received a shutdown request,
current time otherwise (with Long.MIN_VALUE changed by +1)
jraft-core/src/main/java/com/alipay/sofa/jraft/util/timer/HashedWheelTimer.java