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

被折叠的 条评论
为什么被折叠?



