java 计时器标记位_整理:java定时器。

本文纯属个人思路,如有错误,请指正。

java的Timer依赖Thread,每一个Timer实际上都是一个Thread。

在win7 的myeclipse8.5的默认安装后的未做任何调节的开发环境下:

方案一:

启动1w个的Timer,结果如下:

JVjeM81NYEgAAAABJRU5ErkJggg==

才1w个Timer提示jvm的内存不够使的了。

方案二:

同一个Timer调度1w个TimerTask,至少在运行5分钟后没出什么Error。。。。貌似有点囧,也没任何输出,写的Timer调度TimerTask的延迟时间有点大,哈。

在实际应用中,Timer存在计时器线程终止 或者 计时器取消 导致的 非重复事件

TimerTask。

原因:对 Timer 对象最后的引用完成后,并且

所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。出自:jdk

api 1.6.0 java.util  类 Timer。

方案三:

使用Thread.sleep() +

遍历全部数据实体并比较时间标记位   :模拟计时器。

个人注:

①、 主动让系统回收垃圾对象:System.gc()。

②、方案二 和 方案三 都存在缺陷, 如果存在长耗时的任务,会导致后续的部分任务 晚于预设的时间标识点才能执行。

原文:http://www.cnblogs.com/ribavnu/p/3720665.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值