创建定时器对象:

Timer timer = new Timer();

定时执行任务:
只执行一次:
timer.schedule(TimerTask task, long delay)  // 延迟 delay(毫秒)后执行一次 task ;
timer.schedule(TimerTask task, Date time)  // 指定时间 time 执行一次 task;

重复执行:
timer.schedule(TimerTask task, long delay, long period)  // 延迟 delay(毫秒)后首次执行 task,间隔
period 重复执行 task;
timer.
schedule(TimerTask task, Date firstTime, long period)  //指定 firstTime 首次执行 task, 间隔 period 重复执行 task;

例子:
 /**
     * 指定定时器延迟 delay 后执行任务(只执行一次)
     */
    public static void timer1(){
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("当前时间: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1));
            }
        }, 1000);
    }

    /**
     * 指定某个时间执行定时器(之执行一次),对于一过去的时间立即执行
     */
    public static void timer2(){
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("当前时是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1));
            }
        }, DateUtils.strToDate("2022-03-13 09:54:20"));
    }

    /**
     * 延迟 delay 时间后执行,间隔 period 重复执行
     */
    public static void timer3(){
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("当前时间是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1));
            }
        },0, 1000);
    }

    /**
     * 设置首次执行时间,间隔 period 重复执行(首次时间已经过去立即执行)
     */
    public static void timer4(){
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("当前时间是: " + DateUtils.dateToStr(new Date(), DateUtils.sdf_str1));
            }
        }, DateUtils.strToDate("2022-05-13 10:10:30"), 1000);
    }

 

时间工具类:

public class DateUtils {
    public static String sdf_str1 = "yyyy-MM-dd HH:mm:ss";

    public static String sdf_str2 = "yyyy-MM-dd";

    public static String sdf_str3 = "HH:mm:ss";


    private static SimpleDateFormat SDF = new SimpleDateFormat(sdf_str1);

    /**
     * 自定义时间转换成字符串
     * @param date
     * @param formate
     * @return
     */
    public static String dateToStr(Date date, String formate){
        SimpleDateFormat sdf = new SimpleDateFormat(formate);
         return sdf.format(date);
    }

    public static Date strToDate(String str){
        try {
            return SDF.parse(str);
        } catch (ParseException e) {
//            e.printStackTrace();
            System.err.println("时间转换失败: " + e.getMessage());
        }
        return null;
    }
}

  

 

 

 
posted on 2022-05-13 10:40  大渔33  阅读(390)  评论(0)    收藏  举报