这两天在重构代码,发现有几个map有出现内存泄露的问题。考虑到独立性,通过java 的timetask来实现。
这里要注意的地方就是任务起始时间的获得。
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* 定时清除类 防止内存泄露 每天清除一次 凌晨三点
*
* @author franciscolv
*
*/
public class ScheduleTask extends TimerTask {
private Timer timer = new Timer();
private ZooKeeperController zkcontroller;
private ZKAgentMain zkAgentMain;
public ZKAgentMain getZkAgentMain() {
return zkAgentMain;
}
public void setZkAgentMain(ZKAgentMain zkAgentMain) {
this.zkAgentMain = zkAgentMain;
}
public void start() {
//这里设置为凌晨三点执行
Calendar date = Calendar.getInstance();
date.set(Calendar.HOUR, 15);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
Date time = date.getTime();
timer.scheduleAtFixedRate(this, time, 1000 * 60 * 60 * 24);
}
@Override
public void run() {
//这里做定时任务的处理
}
public void setCalendar(Calendar calendar) {
this.calendar = calendar;
}
public Calendar getCalendar() {
return calendar;
}
}
其实,Map类的缓存最好还是使用linkHashMap或者之类的带有LRU或者FIFO算法的Map来实现。
手写并发LRU Map值得推荐。等哪天有需求了,写一下。
分享到:
相关推荐
NULL 博文链接:https://ynshun.iteye.com/blog/1917218
Java定时器,实现以圈计时和以秒计时两种功能。特比适合Java初学者
java定时器的实现 本例依据Java自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务(Task)。
在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。 对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
简单的java定时器实现,需要的可以下载看看,希望有些帮助吧
java定时器例子,使用 java.util.TimerTask 类来实现定时执行
java中实现定时器的三种方式,qutarz+spring, spring-task, java Timer
本项目用于实现动态可配置的定时任务功能,程序基于Java的定时器线程池,阻塞队列开发,定时调度时间采用cron表达式配置的方式,其中cron表达式解析工具类提取自spring。 用法极其简单,只需要将ScheduleUtils工具类...
用java实现最小堆的定时器,和用时间轮实现定时器,可以运行,简单的实现
主要介绍了浅谈java定时器的发展历程,具有一定借鉴价值,需要的朋友可以参考下。
java简单实现定时器功能,可用于代码或功能定时执行,时间自己可改,代码有说明
本Java 动态定时器基于Java的定时器线程池,阻塞队列实现,定时调度时间采用cron表达式配置的方式,其中cron表达式解析工具类提取自spring。 用法极其简单,只需要将ScheduleUtils工具类复制到项目里,然后调用...
定时器的详解,定时器原理及java定时器的实现
使用了spring的相关技术实现了java中的定时器实现---调度
使用spring 实现的两种定时任务,使用eclipse直接导入就可使用
此为根据时间轮定时器的算法实现的 java时间轮的定时器,多轮和单轮实现
本工程用于研究如何在Spring框架中采用Scheduled注释的方式实现Spring定时器的功能 本工程编码方式:UTF-8 相关博客:http://blog.csdn.net/gaohuanjie/article/details/43559167
便携式钟程序,要求画出时钟面板,时针,分针,秒针,实现了时钟的控制面板