高分:如何让程序每天固定在9点执行?
在网上看了资料都是说用Timer 和TimerTask ,但我试了就是不行。那两个类只是固定时间间隔执行,无法固定在每天的9点啊!
求救高手啊, 写出具体实现代码最好了。谢谢~~
------解决方案--------------------使用WinService,根据时间来启动程序。
------解决方案--------------------Timer timer=new Timer();
Date initDate=new Date();
initDate.setHours(9);
timer.scheduleAtFixedRate(new TimerTask(){//每日更新上一天记录
public void run() {
System.out.println( "更新 ");
}},initDate,24*60*1000*60);//
不过这样只能是9:00左右可能会有点误差
------解决方案--------------------java.util.Calendar c=java.util.Calendar.getInstance();
c.set(java.util.Calendar.HOUR_OF_DAY,9);
c.set(java.util.Calendar.MINUTE,0);
c.set(java.util.Calendar.SECOND,0);
c.set(java.util.Calendar.MILLISECOND,0);
java.util.Timer t=new java.util.Timer();
TheTimerTask task=new TheTimerTask();
t.schedule(task,0,1000*60*60*24);
class TheTimerTask extends TimerTask{
public void run()
{
System.out.println( "wo shi ruo zhi ");
}
}
------解决方案--------------------windows系统有个计划管理器。设置==》性能和维护==》任务计划==》添加任务计划
------解决方案--------------------或者:
java.util.Calendar c=java.util.Calendar.getInstance();
c.set(java.util.Calendar.HOUR_OF_DAY,9);
c.set(java.util.Calendar.MINUTE,0);
c.set(java.util.Calendar.SECOND,0);
c.set(java.util.Calendar.MILLISECOND,0);
java.util.Timer t=new java.util.Timer();
TheTimerTask task=new TheTimerTask();
t.schedule(task,c.getTime(),1000*60*60*24);
class TheTimerTask extends TimerTask{
public void run()
{
System.out.println( "wo shi ruo zhi ");
}
}
------解决方案--------------------用计划任务不行么?
------解决方案--------------------有个OpenSource的项目叫quartz,可以很好的实现你的要求,
你去研究下吧,很不错的
------解决方案--------------------1.设置CMOS,让机器每天8点45自动开机.
2.设置操作系统自动登录.
3.设置自动启动运行环境(服务,自启动项目,RUN...).
4. "Timer 和TimerTask ,但我试了就是不行。那两个类只是固定时间间隔执行,无法固定在每天的9点啊! " 这个就不想说了,还是自己去想吧.我们能得到的只是材料,用材料去做出各种各样的产品,如果什么都是现成的,还要我们干什么呢???
------解决方案--------------------楼上的兄弟说的有道理啊,现在的人往往都太懒了
------解决方案--------------------用quartz肯定可以的.功能非常强大.实在不行就自己写一个线程去扫描了.
------解决方案--------------------quartz比较好 可以试一试
------解决方案--------------------利用TIMER每隔时间检测一次java.util.Calendar类里的方法判断是不是九点
------解决方案--------------------我就用quartz定时同步数据