Java定时器Timer

public static void main(String[] args) {
    // 5秒之后 每1秒执行一次
    Timer timer1 = new Timer();
    timer1.schedule(new TimerTask() {
        @Override
        public void run() {
            System.out.println("hello11111");
        }
    }, 5000, 1000);

    //  5秒之后 执行一次
    Timer timer2 = new Timer();
    timer2.schedule(new TimerTask() {
        @Override
        public void run() {
            System.out.println("hello22222");
        }
    },5000);

    //  当前时间执行一次 然后每5秒执行一次
    Timer timer3 = new Timer();
    timer3.schedule(new TimerTask() {
        @Override
        public void run() {
            System.out.println("hello33333");
        }
    },new Date(),5000);
}

// 指定时间执行
    @Test
    public void testTimer() throws Exception {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String end = "2019-06-14 15:15:00";
        //开启任务
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
                           @Override
                           public void run() {
                               for (int i = 0; i < 5; i++) {
                                   System.out.println(i);
                               }
                           }

                       }, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(end)
        );
        System.out.println();
        //timer.cancel(); // 取消队列任务
        //timer.purge();  // 方法调用返回从队列中删除的任务数。
        timer.schedule(new TimerTask() {
                           @Override
                           public void run() {
                               for (int i = 6; i < 10; i++) {
                                   System.out.println(i);
                               }
                           }

                       }, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(end)
        );
    }

注:Timer有个坑的地方,假如有两个Timer在同某时刻同时执行,这个顺序是保证不了的,解决办法就是,不要用俩Timer,就用一个,这样的话虽然是同一时间执行,但是谁在上面谁就先执行。。。

Last modification:July 24th, 2019 at 12:34 am