@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();
        }

    }
@Test
    public void testListIterator() {
        TimerTask timerTask = new TimerTask(100000) {
            @Override
            public void run(final TaskEntity taskEntity) {
            }
        };
        timerTaskList.add(new TimerTaskList.TimerTaskEntry(timer, timerTask, -1L));
        assertEquals(taskCount.get(), 1);
        for (final TimerTask task : timerTaskList) {
            assertSame(timerTask, timerTask);
        }
    }