Java自定义定时器
来源:互联网 发布:mac锁屏时钟 编辑:程序博客网 时间:2024/05/16 09:55
Java自定义定时器
很多时候,我们需要使用定时器进行操作,比如数据统计、任务定时等等。但是很多时候,定时任务需要可以取消,需要重新设置时间等等,使用Java自带的Timer有时不太简单,所以想到对Timer进行扩展,实现自定义定时器的效果。
定时任务接口:
public interface StartTimer { /** * startNextTimer * @描述: 开启下一次定时器 * @作者: zhuxl * @创建时间: 2016年8月29日 */ public abstract void startNextTimer(); /** * startTimer * @描述: 开启定时器 * @作者: zhuxl * @创建时间: 2016年8月29日 */ public abstract void startTimer(); /** * stopTimer * @描述: 停止定时器 * @作者: zhuxl * @创建时间: 2016年8月29日 */ public abstract void stopTimer(); /** * restartTimer * @描述: 重新启动 * @作者: zhuxl * @创建时间: 2016年8月30日 */ public abstract void restartTimer();}
抽象实现:
/** * 抽象实现 * @author zhuxl * */public abstract class StartTimerImpl implements StartTimer { /** *定时器 */ protected Timer timer; @Override public void stopTimer() { if(timer!=null){ timer.cancel(); } } @Override public void restartTimer() { startTimer(); }}
而具体的定时器,比如报告生成,代码如下:
@Component("reportTimer")public class ReportTimerImpl extends StartTimerImpl{ private Logger logger=Logger.getLogger(ReportTimerImpl.class); @PostConstruct public void init(){ this.startTimer(); } @Override public void startNextTimer() { if(timer!=null){ timer.cancel(); logger.info("报告定时器取消!!"); } timer=new Timer(true); Date nextDate=computeNextDate(false); if(nextDate==null){ logger.info("报告定时器已经关闭!!"); return ; } logger.info("报告定时器重新启动,下次执行时间:"+nextDate); timer.schedule(new ReportTask(),nextDate); } /** * computeNextDate * @描述: 计算下一次时间 * @作者: zhuxl * @创建时间: 2016年8月30日 * @return */ private Date computeNextDate(boolean flag){ ... //返回下一次任务时间 } @Override public void startTimer() { if(timer!=null){ timer.cancel(); logger.info("报告定时器取消!!"); } timer=new Timer(true); Date nextDate=computeNextDate(true); if(nextDate==null){ logger.info("报告定时器已经关闭!!"); return ; } logger.info("报告定时器启动,下次执行时间:"+nextDate); timer.schedule(new ReportTask(),nextDate); }}
在使用中需要使用Spring的注解!!!ReportTask为具体的定时任务。在其他需要重启服务的地方重新调用reportTimer.restartTimer()即可;关闭定时器为reportTimer.stopTimer()。
0 0
- 自定义 Java 定时器
- Java自定义定时器
- 自定义定时器
- java 内置定时器实现定时任务和自定义定时任务
- [Java--定时器]--定时器举例
- 自定义JavaScript定时器类
- JS中自定义定时器
- JS中自定义定时器
- 自定义定时器(Timer)
- Unity自定义定时器
- 自定义定时器类
- 安卓自定义定时器
- js自定义定时器
- JAVA定时器
- java 定时器
- JAVA定时器
- java定时器
- JAVA定时器
- JSP 使用<%@include%>报Duplicate local variable path 错误 解决方法
- Int和char数据运算
- Service及Notification的使用
- java学习日记_36:面向对象之继承中构造方法的关系
- 第三方库-Gson和Fast-json
- Java自定义定时器
- Linux下配置Mysql允许远程访问详解
- C#中可取消的Task
- Atom 编辑器插件:amWiki 轻文库
- codevs 1198 国王游戏 贪心
- 安卓开发——控件属性background与src的区别
- 优先队列
- 尚硅谷java学习笔记——3.面向对象编程
- java学习日记_37:方法重写的应用和注意事项