java Timer 定时循环线程造成系统时钟混乱

修复Tomcat Timer线程导致系统时钟变快
本文介绍了一个特殊的bug,在Windows Server 2003环境下使用Tomcat部署的应用中,若应用使用了Timer定时任务,可能会导致系统时钟逐渐加快。文章详细解释了该现象的原因,并提供了解决方案,即通过调整JVM参数来规避此问题。

    问题的现象描述:tomcat下的web工程中的Timer 定时循环线程启动后,会导致系统时钟慢慢的变快,一段时间后系统时钟又突然变正常,Timer 每秒重复执行程序一次,这种现象反复的出现。但这种现象并不是必现的,同样的程序在另一台XP的系统上运行则不会出现此种情况。

    系统环境描述:

           操作系统:Windows Server 2003

           tomcat版本:tomcat 6.0.18

           jdk版本:1.6.0_07-b06

    问题原因说明:经过搜索获知,这是jvm出现的一个bug,当多个Timer线程频繁的定时重复执行程序时,Timer中的Thread.sleep()方法,若sleep的参数小于10ms就可能会造成windows系统时钟变快。

    解决办法:在tomcat 的jvm启动参数中加上ForceTimeHighResolution 这一参数,具体操作如下:

                  以tomcat 6.0.18为例:

                  打开bin目录下的tomcat6w.exe—>java 选项 —>在Java Options中添加如下一行:

                  -XX:+ForceTimeHighResolution

                  重新启动tomcat即可。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值