java timer 实现在指定时间执行方法

最近在弄一个定时发送的项目,需要定时执行方法,于是用到了Timer,但是我想要的功能网络上的资源比较少,所以自己研究了一下。

下面是我写的一些代码

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;


public class TimerTest {
    /*
     * 定时执行方法
     */
    public void Timing(String sssString , int[] dateTime){
        Timer timer = new Timer();
        Calendar calendar = Calendar.getInstance();
        calendar.set(dateTime[0], dateTime[1]-1, dateTime[2], dateTime[3], dateTime[4], dateTime[5]);//第二的参数要主要,月是从0开始的,所以要-1.
        
        Date date = calendar.getTime();//网络上很多都是用Date date = new Date(year, month, date, hrs, min, sec)
//        System.out.println(date);
        try {
            timer.schedule(new NowTask( timer,sssString), date);//可以传递参数进去定时任务类
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /*
     * 实现时间字符串转化为int数组,便于传递参数
     */
    public int[] String2Int(String timeString){
        String year = timeString.substring(0, 4);
        String month = timeString.substring(5, 7);
        String date = timeString.substring(8, 10);
        String hour =timeString.substring(11, 13);
        String min = timeString.substring(14, 16);
        String sec = timeString.substring(17,19);
        int[] time = new int [6];
        String[] timeStrings = new String[]{year,month,date,hour,min,sec};
        for (int i = 0; i < timeStrings.length; i++) {
            time[i]=Integer.valueOf(timeStrings[i]);
        }
        return time;
    }
    public static void main(String[] args) {
        TimerTest timerTest = new TimerTest();
        String timeString ="2012/04/11 16:46:00";
        timerTest.Timing("成功了", timerTest.String2Int(timeString));
    }
}
然后是NowTask类
import java.util.Timer;
import java.util.TimerTask;

public class NowTask extends TimerTask{
    private Timer timer;
    private String string;
    /*
     * 构造器
     */
    public NowTask(){
        
    }
    public NowTask(String string){
        this.string = string;
    }
    public NowTask(Timer timer){
        this.timer =timer;
    }
    public NowTask(Timer timer , String string){
        this.timer = timer;
        this.string =string;
    }
    //属性的get、set方法
    public Timer getTimer() {
        return timer;
    }

    public void setTimer(Timer timer) {
        this.timer = timer;
    }
    public String getString() {
        return string;
    }
    public void setString(String string) {
        this.string = string;
    }
    /*
     * (non-Javadoc)
     * @see java.util.TimerTask#run()
     * 执行方法
     */
@Override
    public void run(){
        //这里写需要定时执行的方法
        System.out.println(string);
        timer.cancel();//传递timer进来就是为了在方法执行完后退出,必须退出
        System.out.println("结束");
    }
}
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值