java timer定时器

1.case 1

/**
     按固定间隔执行任务
     在delay时间后开始,之后按period执行

     * @param task   要执行的任务.
     * @param delay  任务开始执行前延时的毫秒数
     * @param period 后续任务执行的毫秒间隔
     * @throws IllegalArgumentException
     */
    public void schedule(TimerTask task, long delay, long period) {
        if (delay < 0)
            throw new IllegalArgumentException("Negative delay.");
        if (period <= 0)
            throw new IllegalArgumentException("Non-positive period.");
        sched(task, System.currentTimeMillis()+delay, -period);
    }

demo

public class Main {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new MyTask(), 1000, 1000);
    }
}
public class MyTask extends TimerTask {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println(new Date());
    }
}
输出:
Tue Aug 23 10:52:56 CST 2016
Tue Aug 23 10:52:57 CST 2016
Tue Aug 23 10:52:58 CST 2016
Tue Aug 23 10:52:59 CST 2016
Tue Aug 23 10:53:00 CST 2016

2.case 2

/**
     * @param task   要执行的任务.
     * @param firstTime 任务执行的开始时间
     * @param period 后续任务执行时间间隔
     * @throws IllegalArgumentException 
     */
    public void schedule(TimerTask task, Date firstTime, long period) {
        if (period <= 0)
            throw new IllegalArgumentException("Non-positive period.");
        sched(task, firstTime.getTime(), -period);
    }

demo

import java.util.Timer;
public class Main {
    private static final int day = 24 * 60 * 60 * 1000;// 每隔一天,24小时
    public static void main(String[] args) {
        Timer timer = new Timer();
        Config config = Config.getInstance();
        timer.schedule(new MyTask(), config.getTime(Config.BEGINTIME), day);
    }
}
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Properties;

public class Config {
    public static final String BEGINTIME = "beginTime";// 开始时间
    public static List cfgkeys;
    private static Config instance = new Config();
    private Properties cfg = new Properties();

    private Config() {
        cfgkeys = new ArrayList();
    }
    public static Config getInstance() {
        return instance;
    }
    public void initCfg() {
        // 读文件
        InputStream is = Config.class.getClassLoader().getResourceAsStream(
                "config.properties");
        try {
            cfg.load(is);
        } catch (IOException e) {
            System.out.println("xxxx");
        }
    }

    public String getCfgValue(String key) {
        return cfg.getProperty(key);
    }
    /**
     * 扫描启动时间
     */
    public Date getTime(String timeType) {
        /**
         * 得到发送的当天日期,并和时分秒拼接成开始时间
         */
        String beginTime = cfg.getProperty(timeType);
        int hour = Integer.valueOf(beginTime.substring(0, 2));
        int minute = Integer.valueOf(beginTime.substring(2, 4));
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, hour);
        cal.set(Calendar.MINUTE, minute);
        cal.set(Calendar.SECOND, 0);
        return cal.getTime();
    }
}

你可能感兴趣的:(java,timer,#,java)