java定时任务——间隔指定时间执行方法

摘要:运行 main 方法的时候开始进行定时任务,

  service.scheduleAtFixedTate(task,5,TimeUnit.SECONDS);方法为关键

  此次任务就是 run() 方法里面的内容

  

package com.zhanzhuan.timedtask;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class MainTest {
    public static void main(String[] args) {
        // 第一种方法
//        TaskOne();
        // 第二种方法
        TaskTwo();
    }

    public static void TaskOne() {
        Runnable task = new Runnable() {
            // run 方法内的内容就是定时任务的内容
            public void run() {
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                System.out.println("当前的系统时间为:" + sdf.format(new Date()));
                if ("17:08:30".equals(sdf.format(new Date()))) {
                    System.out.println("开始任务");
                }
            }
        };
        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        // 参数解释
        // 1=此次任务、2=任务开始延迟时间、3=任务之间间隔时间、4=单位
        service.scheduleAtFixedRate(task, 1, 1, TimeUnit.SECONDS);
    }

    public static void TaskTwo() {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                System.out.println("当前的系统时间为:" + sdf.format(new Date()));
                if ("16:52:30".equals(sdf.format(new Date()))) {
                    System.out.println("开始任务");
                }
            }
        }, 0, 1);// 2000=开始延迟时间 500=间隔时间
    }
}