说明
定时器:到达某一时刻执行的方法
注意:是单独开启了一个线程
背景
1.在项目中需要在某个时间去扫描数据库中的数据,并把数据添加到数据库中
2.其他场景:定时提醒打卡(???或者有其他方式实现)
public void timer(){
Timer timer = new Timer();
//第一次间隔 后面的间隔
Date todaySetTime = getTodaySetTime(15, 41, 0);
timer.schedule(new TimerTask() {
//查询合同编号
@Override
public void run() {
//需要执行的代码
}
//todaySetTime 什么时刻执行 3*1000循环执行的间隔时间 毫秒
},todaySetTime,3*1000);
//todaySetTime如果为long类型的时间(单位毫秒),则是在启动定时器后的某时间执行
}
/**
* 获取当天的 定义的小时和分钟时间
* @param hour 24小时 超出范围为 8
* @param minute 60 超出为0
* @return
*/
public Date getTodaySetTime(int hour,int minute,int second){
if(hour>24 || hour<0){
//设置为8:点 需要配合set方法
hour=8;
}
if(minute>60 || minute<0){
minute=0;
}
Locale locale = Locale.getDefault();
Calendar instance = Calendar.getInstance(locale);
instance.set(Calendar.AM_PM,Calendar.AM);
//设置为0时刻
instance.set(Calendar.HOUR,hour);
instance.set(Calendar.MINUTE,minute);
instance.set(Calendar.SECOND,0);
instance.set(Calendar.MILLISECOND,0);
return instance.getTime();
}