征集java TTL实现方案,求大神关注
规则实体包含创建时间和生存时间,
比如说,我在10:30新增一条规则A,他的生存时间是半小时,
那么在11:00的时候,需要执行让这条规则失效的操作。
这个需求,我的有2种思路,
一是使用定时任务,二是使用线程计时。
问题是如果半小时内创建了近W条规则,那必须启动近W个定时任务或启动近W个线程,
那cpu的占用不可想象的。
有没有更好的点子?
------解决方案--------------------显然没啥必要这么干。。。
去研究下Java自带的Timer的实现机制吧,是个不错的典范。
------解决方案--------------------用spring的定时器看看。
------解决方案--------------------那就不要用线程,因为那么多线程启动后,系统资源的消耗加上关闭操作所需时间,照样不会很准时关闭,不如顺序关闭。如果关闭操作很耗时,可以考虑只先执行简单的状态置位工作(后续程序很可能只需要这个),资源回收之类的可以让其延时执行。
------解决方案--------------------用
quartz试试!