schedule(timertask task, date time)设定指定任务task在指定时间time执行。
cancel()方法结束这个定时器。
schedule(timertask task, long delay, long period)方法设定指定任务task在指定延迟delay后进行固定延迟peroid的执行。
scheduleatfixedrate(timertask task, long delay, long period)方法设定指定任务task在指定延迟delay后进行固定频率peroid的执行。
要实现一个定时任务,运用java中的timer和timertask类可以非常容易实现实时调用处理函数。这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需要。
看个简单的例子:
public class timertest
{
private static final int c_schedule_hour = 0;
private static boolean isrunning = false;
public static void main(string[] args)
{
timer timer = new timer();
system.out.println(定时器已启动);
// 在1秒后执行此任务,每次间隔2秒,如果传递一个data参数,就可以在某个固定的时间执行这个任务.
timer.schedule(new mytask(), 1000, 2000);
system.out.println(已经添加任务调度表);
while (true)
{// 这个是用来停止此任务的,否则就一直循环执行此任务了
try
{
int ch = system.in.read();
if (ch - 'c' == 0)
{
// 使用这个方法退出任务
timer.cancel();
}
}
catch (ioexception e)
{
e.printstacktrace();
}
}
}
public static class mytask extends timertask
{
@override
public void run()
{
calendar cal = calendar.getinstance();
// 为防止24小时执行下来,任务还未执行完(当然,一般任务是没有这么长的),避免第二次又被调度以引起执行冲突,设置了当前是否正在执行的状态标志isrunning
if (!isrunning)
{
// 常量c_schedule_hour表示(晚上12点,也即0点)
// if (c_schedule_hour == cal.get(calendar.hour_of_day))
// {
isrunning = true;
system.out.println(开始执行指定任务);
// todo 添加自定义的详细任务,以下只是示例
// 删除e:\tomcat6018\webapps\wldb\yaowen\html\20101227\下的文件
// 声明变量
file[] fls = null;
string citydirectpath = e:/apache-tomcat-6.0.33/webapps/search/download;
file citydirect = new file(citydirectpath);
try
{
if (citydirect.exists() && citydirect.isdirectory())
{
// 文件夹*是否存在
fls = citydirect.listfiles();
if (fls != null)
{
for (file fl : fls)
{
fl.delete();
}
}
}
}
catch (exception e)
{
// out.println(删除失败
);
}
isrunning = false;
system.out.println(指定任务执行结束);
// }
}
else
{
system.out.println(上一次任务执行还未结束);
}
}
}
更多java定时器实例 。
