现在项目中需要开发一个定时任务,去清理指定目录下过期的文件,有几种实现定时器的方法定时器代码如下
方法一:
public class FileProcesser
{
private static Logger logger = Logger.getLogger(FileProcesser.class);
public static void start()
{
int startHour = 0;
int startMinute = 3;
// 读取配置文件中启动定时任务时间
String[] startTime = FileConfig.fileConfig.get(
FileConfig.START_CLEARFILE_TIME).split(":");
try
{
startHour = Integer.parseInt(startTime[0]);
startMinute = Integer.parseInt(startTime[1]);
}
catch (Exception e)
{
logger.error("get Config Info fail", e);
}
scheduleProcessFile(getDelay(startHour, startMinute), 86400000);
}
private static void scheduleProcessFile(long delay, long period)
{
try
{
ScheduledExecutorService ses = Executors
.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(new FileProcessTask(), delay, period,
TimeUnit.MILLISECONDS);
}
catch (Exception e)
{
logger.error("scheduleProcessFile Exception", e);
}
}
private static long getDelay(int hour, int minuts)
{
// 获得定时时间毫秒
Calendar sendCal = Calendar.getInstance();
sendCal.set(sendCal.get(Calendar.YEAR), sendCal.get(Calendar.MONTH),
sendCal.get(Calendar.DAY_OF_MONTH), hour, minuts);
long sendAtTime = sendCal.getTimeInMillis();
// 获得当前时间毫秒
Calendar now = Calendar.getInstance();
long newTime = now.getTimeInMillis();
// 如果过了定时时间,24小时后在处理
if (newTime > sendAtTime)
{
sendCal.set(sendCal.get(Calendar.YEAR),
sendCal.get(Calendar.MONTH), sendCal
.get(Calendar.DAY_OF_MONTH) + 1, hour, minuts);
sendAtTime = sendCal.getTimeInMillis();
}
long delayTime = sendAtTime - newTime;
return delayTime;
}
}
方法二:
private Timer timer= null;
private void start()
{
// 清除过期的定时器任务,每2个小时过期时间间隔检查一次容器
TimerTask task = new TimerTask()
{
@Override
public void run()
{
// 处理定时任务
}
};
timer= new Timer(true);
timer.schedule(task, 0, 1000 * 60 * 60 * 2);
}
分享到:
相关推荐
java定时任务,每天定时执行任务,每天到这个时间点都会执行
JAVA项目服务器启动时自启动指定的Servlet,并定时执行任务。 配置关键在web.xml和servlet文件中的init操作
介绍了Java定时执行任务,给出了如何使用ServletContextListener实现定时运行java某个方法的例子,简单易用。
可定时启动任务 或者项目启动时启动
我们通常写的timer都是用main方法写的定时器,但同样我们也需要根据服务器启动后定时器也启动的 定时执行任务。不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台...
程序启动类:dzw.Start.java 程序连接sqlserver用的是jtds,mysql和oracle的数据库连接驱动类请自行放到程序里:src/libs下(这里不支持重新上传文件(:)。 可根据需要,自行修改源代码,程序功能有限,不喜勿喷,有...
1.delay一段时间后,启动任务,任务只运行一次 2.delay一段时间后,周期运行任务 3.delay一段时间后,运行指定次任务 4.从某一特定时间开始,启动任务,任务只运行一次 5.从某一特定时间开始,周期运行任务 6....
本文档 描述怎样定时 启动一个线程任务 并加了注释 希望对你有帮助
spring-boot 2.0.2 数据库配置定时任务。spring-boot 2.0.2.RELEASE,将定时...含数据库建表语句和示范,运行application启动定时任务,测试类示范查看,修改定时任务。 springboot 定时任务 mybatis scheduled ta。
上一次传错了资源了,这个是正确的,包含quartz动态定时任务的
定时任务,不是循环,可以自定义命令行,运行java程序,git命令,可以定时打包,更新、关机等操作,通过配置自定义时间 config.json 配置文件如下 { "timer": [ "10:00:00", "12:30:00", "20:00:00", "23:40...
java定时任务启动每天定时启动某个程序,
动态获取定时任务,,将定时任务配置在数据库,启动项目的时候,用mybatis读取数据库,实例化对象,并设定定时任务。如果需要新增,减少,修改定时任务,仅需要修改数据库资料,并重启项目即可,无需改代码
spring3 配置quartz定时任务的使用。一个小例子。可直接运行Test.java。就可以启动定时任务。每10秒钟执行一次,可以根据自己配置。
Linux下定时任务,命令启停jar包服务
java中原生定时任务SchedulerDemojava中原生定时任务SchedulerDemojava中原生定时任务SchedulerDemo
1. 项目启动时,会自动从数据库中加载状态为 1 的定时任务并开始执行,1 表示处于开启状态的定时任务,0 表示处于禁用状态的定时任务。 2. 点击页面上的**添加作业**按钮,可以添加一个新的定时任务,新任务的 Bean ...
1.1.1 定时任务的方法在启动类里面 1.1.2 定时任务的方法在启动类之外 1.2 fixedDelay 1.3 fixedRate 1.4 initialDelay 一点五 cron解释 结构 取值范围 常例 二、基于SchedulingConfigurer接口的方式 2.1数据库准备 ...
NULL 博文链接:https://medbricom.iteye.com/blog/1782765
1.简单的一个定时任务Demo,可直接在eclipse中运行。 2.注释全面,简单易懂 3.比较全面,如果当前定时任务没有执行完,则下一个也不能执行