timer基础问题 我想让 timer在早上6:00 中午12点 晚上18:00运行schedule(TimerTask task, Date time) 我该怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TimerTask task = new TimerTask(){ public void run() { //To do }}Timer timer = new Timer();Date date = SimpleDateFormat.pasre("2008-02-16 6:00");timer.schedule(task, date, 1000 * 60 * 60 * 6);//每隔六小时运行一次 ...分给过你才发现问题还没解决..timer.schedule(task, date, 1000 * 60 * 60 * 6);//每隔六小时运行一次你这是每间隔6个小时才运行一次如果中间程序关闭了呢??? 那不就完蛋了?我要的是早上6:00 中午12点 晚上18:00 这个问题容易解决,对Date进行计算转换一下就ok了.TimerTask task = new TimerTask(){ public void run() { //To do } } Timer timer = new Timer(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");Date date = sdf.pasre("2008-02-16 6:00");Calendar currentTime = Calendar.getInstance();Calendar firstTime = Calendar.getInstance();if (date < currentTime.getTimeInMillis()) { firstTime.set(currentTime.get(Calendar.YEAR),currentTime.get(Calendar.MONTH), currentTime.get(Calendar.DATE)); //如果当前的时间已经超过了指定运行的时间,则要重新设定运行时间 if (firstTime.getTimeInMillis() <= currentTime.getTimeInMillis()) { while (firstTime.getTimeInMillis() <= currentTime.getTimeInMillis()) { long exeTime = firstTime.getTimeInMillis() + 1000 * 60 * 60 * 6; firstTime.setTime(new Date(exeTime)); } } else { while (firstTime.getTimeInMillis() - currentTime.getTimeInMillis() > 1000 * 60 * 60 * 6) { long exeTime = firstTime.getTimeInMillis() - 1000 * 60 * 60 * 6; firstTime.setTime(new Date(exeTime)); } }}else { firstTime.setTime(date);}timer.schedule(task, firstTime.getTime(), 1000 * 60 * 60 * 6);//每隔六小时运行一次建议不要用java本身的Timer,这是通过Object的wait等方法进行控制的,如果有多个TimerTask的时候,不能同步触发.最好是用Quartz. 发布一个我写的简单打老鼠游戏(代码简单) 一个bug 过滤器的问题! 请教 windows 2003 的问题 报数出局问题,怎么解决? 怎么用java获取windows当前登录的用户名 dll加载问题 平方和开方都用什么函数?power?sqrt?参数有int型的吗? 关于HashMap源码中一个不解之处提问 怎么把找到的int,放到一个list里面?arraylist好像只能放string啊,不用数组。 帮忙看看有什么问题
public void run() {
//To do
}
}
Timer timer = new Timer();
Date date = SimpleDateFormat.pasre("2008-02-16 6:00");
timer.schedule(task, date, 1000 * 60 * 60 * 6);//每隔六小时运行一次
你这是每间隔6个小时才运行一次
如果中间程序关闭了呢??? 那不就完蛋了?
我要的是
早上6:00 中午12点 晚上18:00
TimerTask task = new TimerTask(){
public void run() {
//To do
}
}
Timer timer = new Timer();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = sdf.pasre("2008-02-16 6:00");
Calendar currentTime = Calendar.getInstance();
Calendar firstTime = Calendar.getInstance();
if (date < currentTime.getTimeInMillis()) {
firstTime.set(currentTime.get(Calendar.YEAR),currentTime.get(Calendar.MONTH),
currentTime.get(Calendar.DATE));
//如果当前的时间已经超过了指定运行的时间,则要重新设定运行时间
if (firstTime.getTimeInMillis() <= currentTime.getTimeInMillis()) {
while (firstTime.getTimeInMillis() <= currentTime.getTimeInMillis()) {
long exeTime = firstTime.getTimeInMillis() + 1000 * 60 * 60 * 6;
firstTime.setTime(new Date(exeTime));
}
}
else {
while (firstTime.getTimeInMillis() - currentTime.getTimeInMillis() > 1000 * 60 * 60 * 6) {
long exeTime = firstTime.getTimeInMillis() - 1000 * 60 * 60 * 6;
firstTime.setTime(new Date(exeTime));
}
}
}
else {
firstTime.setTime(date);
}timer.schedule(task, firstTime.getTime(), 1000 * 60 * 60 * 6);//每隔六小时运行一次建议不要用java本身的Timer,这是通过Object的wait等方法进行控制的,
如果有多个TimerTask的时候,不能同步触发.最好是用Quartz.