public void start() {
        this.lock.lock();
        try {
            if (this.destroyed) {
                return;
            }
            if (!this.stopped) {
                return;
            }
            this.stopped = false;
            if (this.running) {
                return;
            }
            this.running = true;
            schedule();
        } finally {
            this.lock.unlock();
        }
    }
@Test
    public void testStartTrigger() throws Exception {
        assertEquals(0, this.timer.counter.get());
        this.timer.start();
        Thread.sleep(1000);
        assertEquals(20, this.timer.counter.get(), 3);
    }