java 定时器 一天有多个时间点执行同一个程序如何实现?

一天设置三个时间点,8:30、12:30、18:30,一个采集程序对一个数据源一天采集三次,如何实现。问题:三个时间点算是三个定时器还是一个。如果用java实现。给出一个... 一天设置三个时间点,8:30 、12:30 、18:30,一个采集程序对一个数据源一天采集三次,如何实现。
问题:三个时间点算是三个定时器还是一个。
如果用java实现。给出一个简单的代码。
如果用spring quartz 来实现,如何配制。
展开
 我来答
真冰刀雪剑
推荐于2018-05-11 · TA获得超过679个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:145万
展开全部
import java.util.*;
class MyTime
{
int hour; int minute;
MyTime(int hour,int minute){
this.hour=hour;
this.minute=minute;
}
}
public class AboutTime
{
public static void main(String args[]){
final MyTime mt=new MyTime(11,24);
//这里,假设程序运行时,是在早上8点半之前的。其他情况,你自行分析
Calendar cal=Calendar.getInstance();
//此方法获得当前地域的时间,注意,getInstance是静态方法
cal.set(cal.HOUR, mt.hour);//设置你所要等待的时刻
cal.set(cal.MINUTE, mt.minute);
Calendar cal2=Calendar.getInstance();//
long time1=cal.get(cal.HOUR_OF_DAY)*3600+cal.get(cal.MINUTE)*60;//将两个时刻都转换成秒数,以便进行相减
long time2=cal2.get(cal2.HOUR_OF_DAY)*3600+cal2.get(cal2.MINUTE)*60+cal2.get(cal2.SECOND);
final long waitTime=time1-time2;//此时获得当前时刻与要等待时刻的时间差,单位是秒
//这里说明一下,现在所指的当前时刻是“Calendar cal2=Calendar.getInstance()”这句执行时所获得的时刻
//获得后,它的各值(秒,分,时)等信息都不会改变。当然,运行几行代码,花不了几毫秒。所以
//虽然之前的cal2的时间信息与运行三行代码以后的时间信息是差不多的
System.out.println(waitTime);//此行用于测试
new Thread(new Runnable(){
public void run(){
try{
for(long l=0;l<waitTime;l++){
Thread.sleep(1000);
System.out.println("###");//一秒打一个,当然,告诉你正在计时
//这里用多线程,因为运行后,可以继续运行主线程。不影响你干其他事儿。
}
}
catch(InterruptedException e){}
System.out.println(mt.hour+":"+mt.minute+"到了");
}
}).start();
//不过,你说一天要三次计算。这很容易,如何实现,由你自己决定。
}
}
beyondts
2010-04-04 · TA获得超过262个赞
知道答主
回答量:178
采纳率:0%
帮助的人:0
展开全部
可以建立一个Timer,然后使用这个Timer启动3个任务,任务所做的事情相同(采集),但是执行时间分别定为那三个时间点,周期为1天

Timer很简单,直接看下API就应该能搞定了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逍遥子arron
2020-06-29
知道答主
回答量:1
采纳率:0%
帮助的人:602
展开全部
0 30,30,30 8,12,18 * * ? cron表达式这样些 就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式