java定时器2(6种方式)

 

目录

一、延时?毫秒后执行

二、(schedule)延时?毫秒后每隔?毫秒执行一次

三、(scheduleAtFixedRate)延时?毫秒后,每隔?毫秒执行一次

四、每天固定某个时间执行

五、(schedule)在某个时间后,每隔?毫秒执行一次

六、(scheduleAtFixedRate)在某个时间后,每隔?毫秒执行一次

schedule和scheduleAtFixedRate的区别


public static void main(String[] args) {
        SpringApplication.run(TimeApplication.class, args);
        timer1();
        timer2();
        timer3();
        timer4();
        timer5();
        timer6();
    }

一、延时?毫秒后执行

public static void timer1() {
        Timer timer=new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("---time1----设定要指定任务-----" + new Date() + "---");
            }
        }, 2000);// 设定指定的时间time,此处为2000毫秒
    }

二、(schedule)延时?毫秒后每隔?毫秒执行一次

public static void timer2() {
        Timer timer=new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                System.out.println("---time2----设定要指定任务----" + new Date() + "----");
            }
        }, 1000, 5000);
    }

三、(scheduleAtFixedRate)延时?毫秒后,每隔?毫秒执行一次

public static void timer3() {
        Timer timer=new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                System.out.println("---time3----设定要指定任务----" + new Date() + "----");
            }
        }, 1000, 2000);
    }

四、每天固定某个时间执行

public static void timer4() {
        Calendar calendar=Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, 8); // 控制时
        calendar.set(Calendar.MINUTE, 52);    // 控制分
        calendar.set(Calendar.SECOND, 40);    // 控制秒

        Date time=calendar.getTime();     // 得出执行任务的时间,此处为今天的12:00:00

        Timer timer=new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                System.out.println("---time4----设定要指定任务----"+new Date()+"----");
            }
        }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行
    }

五、(schedule)在某个时间后,每隔?毫秒执行一次

public static void time5(){
        try {
            Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-02-25 09:05:59");
            Timer timer=new Timer();
            timer.schedule(new TimerTask() {
                public void run() {
                    System.out.println("---time5----设定要指定任务-----" + new Date() + "---");
                }
            },date, 2000);// 设定指定的时间time,此处为2000毫秒
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

六、(scheduleAtFixedRate)在某个时间后,每隔?毫秒执行一次

public static void time6(){
        try {
            Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2019-02-25 09:05:59");
            Timer timer=new Timer();
            timer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    System.out.println("---time5----设定要指定任务-----" + new Date() + "---");
                }
            },date, 2000);// 设定指定的时间time,此处为2000毫秒
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

schedule和scheduleAtFixedRate的区别

在(三)和(四)中的使用,这两者没有什么区别。但是在(五)和(六)中,就有区别了。

schedule方式

      如果设定的时间 date 在项目执行的时候已经过了这个时间,那么会 立即执行 一次 然后,每隔?毫秒执行一次

scheduleAtFixedRate方式

      如果设定的时间 date 在项目执行的时候已经过了这个时间,那么会 立即执行 很多次 ,是从这个设定的date时间开

始,往后每隔?毫秒执行。补回来,比如时间过了 30 秒,设定的是每隔 5 秒执行一次,则会马上执行 6 次,然后按正常

情况继续执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值