知识大全 JAVA多线程程序造成系统时钟变快

Posted

篇首语:从来好事天生俭,自古瓜儿苦后甜。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JAVA多线程程序造成系统时钟变快相关的知识,希望对你有一定的参考价值。

JAVA多线程程序造成系统时钟变快  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近的一个项目 采用JSP+Servlet开发的Web应用 功能不复杂 涉及到一些多线程处理及网络编程 测试期间发现在会造成系统时钟变快 基本运行不到一小时就快了 来分钟 开出时钟程序能明显感觉秒钟跳动比较快 检查过代码没有用到任何有关时间设置的调用 JVM TOMCAT也换过多个版本 依然没能解决问题 由于我们的项目程序不运行时系统时钟一切正常 启动后立刻变快 初步硬件或是其他程序造成的问题 另外 最奇怪的是并不是所有机器上运行都有这种问题 公司里的 台 Server上 台有此现象 另一台始终正常 开发用的一些xp/vista的机器也不都存在这个问题

  着实郁闷了很长一段时间 始终找不到问题的关键 更没法找到解决办法 前两天偶然查到一篇SUN网站bug库中早些年的一篇文章 (ID: )Calling Thread sleep with small argument affects system clock on windows 其中说明了当多线程处理时 调用Thread sleep()方法时 若sleep的参数小于 ms就可能会造成windows系统时钟变快 不过该bug标记为jvm 中才存在 并且已经在后续版本fixed 而我们开发都是用的 版本 于是搜索了下项目代码 确实有用到Thread sleep()方法的地方 而且某些部分由于需求关系 程序中的参数不定的 会依据一定算法计算出来 这样就有可能小于 ms 尽管理论上我们代码中可能最小只设定到 ms左右

  接下来继续搜了下其他的bug report 包括ID为 的文章 发现上述问题并未根本解决 根据文章中提到的ForceTimeHighResolution关键字google一下 发现这个参数是JVM 中的一个 另外搜到老外的帖子里有一篇关于applet游戏程序时钟走快后 其厂商给出的解决办法 就是需要开启ForceTimeHighResolution参数!

  这下好了 这应该就是解决问题的关键所在 重新将项目服务器时间校准 然后在TOMCAT的catalina bat中将JAVA_OPTS参数中增加一项 XX:+ForceTimeHighResolution (注意 和 + 都是有的) 启动TOMCAT运行 查看时钟 感觉没有变快 运行 小时后 未发现变快现象 看来这个参数确实很有效 剩下工作就是把所有安装项目程序的服务器都修改了参数设置 进行长时间运行测试 直至目前为止 均未在出现时钟变快的现象

cha138/Article/program/Java/gj/201311/27346

相关参考

知识大全 Java语言深入 多线程程序模型研究

Java语言深入多线程程序模型研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多线程是较复杂

知识大全 构建多线程Java应用程序

构建多线程Java应用程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大多数服务端应用程序都

知识大全 Java多线程进程应对同一程序运行资源

Java多线程进程应对同一程序运行资源  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java多

知识大全 Java程序中的多线程

Java程序中的多线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一为什么会排队等待?  下

知识大全 Java 程序中的多线程(四)

Java程序中的多线程(四)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作者NeelVKum

知识大全 Java 程序中的多线程(二)

Java程序中的多线程(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作者NeelVKum

知识大全 Java 程序中的多线程(一)

Java程序中的多线程(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作者NeelVKum

知识大全 用Java实现多线程服务器程序

用Java实现多线程服务器程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要在Java出现

知识大全 命名你的线程和查看系统

  虽然集成开发环境(IDE)可以为图形化应用程序提供很好的调试设置但是它不允许你调试多线程的Java服务器程序        幸运的是有几个工具可以做到例如日志应用程序接口(API)和Java调试器

知识大全 Java多线程程序四步轻松学成

Java多线程程序四步轻松学成  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!