java定时器实例_Java定时器小实例
大家好,又见面了,我是你们的朋友全栈君。
有时候,我们需要在Java中定义一个定时器来轮询操作,比如每隔一段时间查询、删除数据库中的某些数据等,下面记录一下一种简单实现方式
1,首先新建一个类,类中编写方法来实现业务操作
public classMailQuartz {
@AutowiredprivateMailServiceImpl sendMail;
@AutowiredprivateTimerServiceImpl timerServiceImpl;public voidQuartz(){
String timer=getTimerStatus();if(!timer.equals(“1”)){
System.out.println(“定时器未开启”);return;
}
List result = new ArrayList();//查询出需要发送邮件的对象
result =timerServiceImpl.checkSendMail();public voiddeleteOldEInvoices(){
timerServiceImpl.deleteOldEInvoices();
}//读取配置文件中的值,开启或者关闭定时器
publicString getTimerStatus(){
InputStream inputStream= this.getClass().getClassLoader().getResourceAsStream(“application.properties”);
Properties pro= newProperties();try{
pro.load(inputStream);
}catch(IOException e) {
e.printStackTrace();
}return pro.getProperty(“timer”);
}
}
View Code
这里我们创建了一个类MailQuartz,然后在类中定义了两个方法Quartz和deleteOldEInvoices,并且在这两个方法中,我们实现了调用service处理相应的业务,ok,下面让我们配置其触发方式。
2,类中的方法触发配置信息,我们写在applicationContext.xml文件中
class=”org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean”>
Quartz
class=”org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean”>
deleteOldEInvoices
0 0/5 * * * ? *
0 0 0 1 * ? *
class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”>
View Code
查看代码,我们可以发现,需要配置我们类MailQuartz、方法Quartz和deleteOldEInvoices的相关信息,然后触发时间的间隔,我们用corn表达式去约束,这样,我们就可以为实现多个方法实现定时器。
3,最后呢,为了优化,由于定时器的触发效果是,项目一启动,定时器就会触发,但是在测试阶段或者你不想让定时器触发,因为他会更改你数据库中的测试数据,那么我们就可以在方法之前读取配置文件中的某个变量值,然后做判断,
String timer = getTimerStatus(); //调用getTimerStatus()方法,取得配置文件中定义的控制值
if(!timer.equals(“1”)){ //然后根据值来阻止定时器的运行
System.out.println(“定时器未开启”);
return;
}
//读取配置文件中的值,开启或者关闭定时器
public String getTimerStatus(){
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(“application.properties”);
Properties pro = new Properties();
try {
pro.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
return pro.getProperty(“timer”); //这里的timer值就是在application.properties中定义的
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/192144.html原文链接:https://javaforall.cn
相关文章
- java反转数组_Java实现数组反转翻转的方法实例
- java:单例模式的五种实现方式[通俗易懂]
- java axis_Java 使用Axis实现WebService实例
- 【说站】java获取class实例的4种方式
- Java栈结构_栈java
- 解决mysql java.sql.SQLException: The server time zone value‘XXXXXX’ is unrecognized or represents…
- java 异或加密_Java异或技操作给任意的文件加密原理及使用详解
- java+sm4+加密算法_SM4加密算法实现Java和C#相互加密解密
- Java中Scanner类的使用
- 【Kotlin】Kotlin 与 Java 互操作 ③ ( Kotlin 中处理 Java 异常 | Java 中处理 Kotlin 异常 | @Throws 注解处理异常 | 函数类型互相操作 )
- Java图像查看器详解编程语言
- 性能优化Java与MySQL时间性能(javamysql时间)
- 学习如何使用Linux环境运行Java程序(linux下的java)
- Linux上部署Java项目实践指南(linux部署java项目)
- 测试Java操作Redis实例(java测试redis)
- 在Linux环境下轻松搭建Java开发环境(linux下搭建java)
- 管理Linux下Java版本管理:轻松实现多版本切换(linux下java版本)
- Java应用在Linux上乱码的原因及解决方法(java linux乱码)
- Java导出Oracle数据提升数据分析流程效率(java导出oracle)
- 合Java与Oracle联手打造崭新未来(java和oracle联)
- Java随机生成验证码(支持大小写字母、数字、随机字体)的实例
- java基本教程之线程休眠java多线程教程
- JAVA获得包含0-9、a-z、A-Z范围内字符串的的随机数实例