如何让线程能在固定的时间运行?(也就是不管我在任何时间启动线程) 使用到一个timer的类,我想让timer.schedule在每个星期一的早上8点到FTP服务器去DOWN一些数据,我想实现的是不管我什么时候启动time类,schedule方法都会固定到星期一的八点才去运行!请问如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try{ String strDate = Utils.getSysTime("yyyy/MM/dd") + " " + timeOfDay; SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date dt = sdf.parse(strDate); long lngPeriod = 24*60*60*1000; if (StatisticsAction == null){ StatisticsAction = new RegularStat(); }else if (StatisticsAction.cancel()){ StatisticsAction = new RegularStat(); } super.schedule(StatisticsAction,dt,lngPeriod); Debug.write("Regular statistics started!"); }catch(Exception ex){ ex.printStackTrace(); } 我把代码贴贴给了,你想要的应该是super.schedule(StatisticsAction,dt,lngPeriod);三个参数分别是,执行对象、执行时间、间隔时间你按照自己需要的替代就可以了,间隔时间是按毫秒的,一天就是24*60*60*1000,一周就再乘以7 dt是你指定的时间,这一句看到了吗:SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");Date dt = sdf.parse(strDate);你想在固定的day而不是date执行,就要自己去确定最近的day是什么date,比如getday后确定今天是星期几,然后根据这个得到下个星期一是几月几号 如果这样的,我可不可以,得到今天星期几,然后根据离我固定的日期还距离的豪秒数来启动程序。也就是说dt我把它变成距离启动时间的毫秒数.int mydate = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); if (mydate == 1) { mydate = 8; } long oneDay=....//这里oneDay就是距离下一天还剩下的毫秒数 long misc = oneDay+ 5 * 3600000 + (7 - mydate + 1) * 86400000; super.schedule(StatisticsAction,misc,lngPeriod);//这里的misc可以吗? 第二个参数要求传入的是时间值,至于有没有其他的,你查查API吧 timer.schedule(task, period, period);task是你要执行的任务delay是当前时间开始多少毫秒后执行period是以后的循环时间段。 Calendar calendar = Calendar.getInstance();calendar.set(Calendar.DAY_OF_WEEK, 2); //每周的第二天,也就是周一calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.HOUR_OF_DAY, 8);calendar.set(Calendar.SECOND, 0);Date time = calendar.getTime();timer = new Timer();timer.schedule(new RemindTask(), time);周一 8:00执行,如果要保证固定到星期一的八点才去运行还需设置 我的程序现在就是让其每个星期一早上8点去FTP下载数据,具体代码是:int mydate = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); if (mydate == 1) { mydate = 8; } long oneDay=....//这里oneDay就是距离下一天还剩下的毫秒数 long misc = oneDay+ 5 * 3600000 + (7 - mydate + 1) * 86400000; super.schedule(StatisticsAction,misc,lngPeriod);但是每次到了时间似乎并不运行!表面上看似乎没问题。不知道kingofworl(良辰美景虚度) 兄弟你的方法测试过这种一周的时间这么长的吗???是不是还是有一他的问题存在呢? 相出办法了 Calendar calendar = Calendar.getInstance();calendar.set(Calendar.DAY_OF_WEEK, 3);calendar.set(Calendar.MINUTE, 30);calendar.set(Calendar.HOUR_OF_DAY, 11);calendar.set(Calendar.SECOND, 0);Date time = calendar.getTime();timer = new Timer();timer.scheduleAtFixedRate(new RemindTask(), time,24*60*60*1000*7);在任务类中 定义一个 private static int i=0;i++判断如果i=1 说明程序初次启动,不执行内容,这样比如今天 已经过了11:30,也不会执行具体内容了 看看这个吧http://www.opensymphony.com/quartz/ 用任务控制器调度!每日推荐票更新 ADMINISTRATOR DB2 命令脚本 成功 2006-05-13 09:00:03.0 2006-05-13 09:00:14.0 00:00:11 1.0 ADMINISTRATOR DB2 命令脚本 已到期 2006-05-15 07:52:24.0 00:00:00 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-15 09:00:02.0 2006-05-15 09:00:09.0 00:00:07 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-16 09:00:03.0 2006-05-16 09:00:20.0 00:00:17 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-17 09:00:04.0 2006-05-17 09:00:21.0 00:00:17 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-18 09:00:20.0 2006-05-18 09:01:04.0 00:00:44 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-19 09:00:02.0 2006-05-19 09:00:15.0 00:00:13 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-20 09:00:05.0 2006-05-20 09:00:23.0 00:00:18 1.0 ADMINISTRATOR DB2 命令脚本 已到期 2006-05-22 08:10:10.0 00:00:00 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-22 09:00:02.0 2006-05-22 09:00:09.0 00:00:07 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-23 09:00:02.0 2006-05-23 09:00:13.0 00:00:11 1.0 ADMINISTRATOR DB2 命令脚本 成功 2006-05-24 09:00:02.0 2006-05-24 09:00:11.0 00:00:09 1.0 关于"接口"的四问以及二个错代码求改正? java俄罗斯方块 按键迟钝 JAVA数组的问题,关于NullPointerException 构造方法,get,set方法都在什么时候使用呢? Jsp中的Application使用 怎麽根據Class來生成一個數組! JSP提问 String类的容量是多少?找了faq等都没有讨论这个的 求教applet的问题 请问JTable怎样响应鼠标事件 怎么操作控件 关于四舍五入问题
String strDate = Utils.getSysTime("yyyy/MM/dd") + " " + timeOfDay;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date dt = sdf.parse(strDate);
long lngPeriod = 24*60*60*1000;
if (StatisticsAction == null){
StatisticsAction = new RegularStat();
}else if (StatisticsAction.cancel()){
StatisticsAction = new RegularStat();
}
super.schedule(StatisticsAction,dt,lngPeriod);
Debug.write("Regular statistics started!");
}catch(Exception ex){
ex.printStackTrace();
}
super.schedule(StatisticsAction,dt,lngPeriod);
三个参数分别是,执行对象、执行时间、间隔时间
你按照自己需要的替代就可以了,间隔时间是按毫秒的,一天就是24*60*60*1000,一周就再乘以7
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date dt = sdf.parse(strDate);
你想在固定的day而不是date执行,就要自己去确定最近的day是什么date,比如getday后确定今天是星期几,然后根据这个得到下个星期一是几月几号
int mydate = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
if (mydate == 1) {
mydate = 8;
}
long oneDay=....//这里oneDay就是距离下一天还剩下的毫秒数
long misc = oneDay+ 5 * 3600000 + (7 - mydate + 1) * 86400000;
super.schedule(StatisticsAction,misc,lngPeriod);//这里的misc可以吗?
delay是当前时间开始多少毫秒后执行
period是以后的循环时间段。
calendar.set(Calendar.DAY_OF_WEEK, 2); //每周的第二天,也就是周一
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR_OF_DAY, 8);calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();timer = new Timer();
timer.schedule(new RemindTask(), time);
周一 8:00执行,如果要保证固定到星期一的八点才去运行还需设置
int mydate = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
if (mydate == 1) {
mydate = 8;
}
long oneDay=....//这里oneDay就是距离下一天还剩下的毫秒数
long misc = oneDay+ 5 * 3600000 + (7 - mydate + 1) * 86400000;
super.schedule(StatisticsAction,misc,lngPeriod);
但是每次到了时间似乎并不运行!
表面上看似乎没问题。
不知道kingofworl(良辰美景虚度) 兄弟你的方法测试过这种一周的时间这么长的吗???
是不是还是有一他的问题存在呢?
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, 3);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.HOUR_OF_DAY, 11);calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();timer = new Timer();
timer.scheduleAtFixedRate(new RemindTask(), time,24*60*60*1000*7);在任务类中 定义一个 private static int i=0;
i++
判断如果i=1 说明程序初次启动,不执行内容,这样比如今天 已经过了11:30,也不会执行具体内容了
http://www.opensymphony.com/quartz/
ADMINISTRATOR DB2 命令脚本 成功 2006-05-13 09:00:03.0 2006-05-13 09:00:14.0 00:00:11 1.0
ADMINISTRATOR DB2 命令脚本 已到期 2006-05-15 07:52:24.0 00:00:00 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-15 09:00:02.0 2006-05-15 09:00:09.0 00:00:07 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-16 09:00:03.0 2006-05-16 09:00:20.0 00:00:17 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-17 09:00:04.0 2006-05-17 09:00:21.0 00:00:17 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-18 09:00:20.0 2006-05-18 09:01:04.0 00:00:44 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-19 09:00:02.0 2006-05-19 09:00:15.0 00:00:13 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-20 09:00:05.0 2006-05-20 09:00:23.0 00:00:18 1.0
ADMINISTRATOR DB2 命令脚本 已到期 2006-05-22 08:10:10.0 00:00:00 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-22 09:00:02.0 2006-05-22 09:00:09.0 00:00:07 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-23 09:00:02.0 2006-05-23 09:00:13.0 00:00:11 1.0
ADMINISTRATOR DB2 命令脚本 成功 2006-05-24 09:00:02.0 2006-05-24 09:00:11.0 00:00:09 1.0