本文目录一览:
java定时器执行时间问题
写个Demo,你要的应该是这个吧。
//获得当天的日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
Date date = new Date();
//定义开始时间字符串
String timeStr = "08:00:00";
timeStr = sdf.format(date)+timeStr;
//获得当天的指定时间的date对象
sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
date = sdf.parse(timeStr);
//判断今天的执行时间是否已经过去,如果过去则改为明天
if(date.getTime()System.currentTimeMillis()){
date = new Date(date.getTime()+24*60*60*1000);
}
TimerTask task = new TimerTask(){
@Override
public void run() {
//your task
}
};
Timer timer = new Timer();
timer.schedule(task, date, 24*60*60*1000);
java 定时器
配置web.xml
listener
listener-classcom.yohn.timer.ExecTimer/listener
/listener
********************************************************************
java源文件
package com.yohn.timmer;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class SetTimerExecute extends TimerTask implements ServletContextListener
{
public void contextDestroyed(ServletContextEvent arg0)
{
System.out.println("服务器停止");
}
public void contextInitialized(ServletContextEvent arg0)
{
System.out.println("服务器启动");
//新建一个时间控件
Timer t = new Timer();
//指定的任务从指定的延迟后开始进行重复的固定延迟执行。
t.schedule(new SetTimerExecute(),1000,1000);
}
public void run()
{
FileWriter fs = null;
BufferedWriter buf = null;
try
{
File f = new File("/test.txt");
if (!f.exists())
f.createNewFile();
fs = new FileWriter(f,true);
buf = new BufferedWriter(fs);
//每天上午7点写入到文件
if(new Date().getHours()==7)
{
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
System.out.print("起床啦!起床啦!");
f.write("定时打印:" + myFormatter.format(new Date();));
buf.newLine();
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
buf.flush();
fs.close();
}
catch (IOException e)
{
}
}
}
}
java定时器 时间间隔
开启一个线程,run的主代码如下:
for(int index=0; index30; index++) {
//do something;
if(index6)
TimeUnit.MINUTES.sleep(10);
else if(index12)
TimeUnit.MINUTES.sleep(20);
else
TimeUnit.HOURS.sleep(1);
}