问题的现象描述: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即可。
分享到:
相关推荐
在Windows Forms(Winform)应用...通过这个例子,开发者可以学习到如何在不影响用户体验的情况下执行定时任务,以及如何正确地在不同线程之间传递数据和更新UI。对于网络编程和C#开发来说,这是一个非常实用的技巧。
Java定时任务调度是Java应用程序中常见的一种功能,用于在特定时间执行特定任务,例如定期备份、数据清理等。`Timer`类是Java中用于实现定时任务调度的一个基础工具,它位于`java.util`包中。在本文中,我们将深入...
### Java线程定时启动知识点详解 #### 一、概述 在Java编程中,有时我们需要让某个任务或操作在特定的时间点或每隔一段时间自动执行一次。这通常被称为“定时任务”。Java标准库提供了几种不同的方式来实现定时...
在.NET框架中,C#提供了两种Timer类,用于在多线程环境中实现定时触发操作:System.Threading.Timer和System.Timers.Timer。这两种Timer虽然都与时间调度相关,但在使用上和特性上有所不同。在这个主题中,我们将...
在Java编程中,多线程时钟是一种常见且实用的应用,它可以模拟现实世界中的时钟,实时更新时间。本文将详细解析给定的代码片段,分析其中涉及的Java多线程、时间处理以及用户界面(UI)设计相关知识点。 首先,程序...
根据提供的文档内容,我们可以深入探讨其中涉及的两个主要知识点:`Timer`的使用以及多线程编程的基础。这里我们将重点放在这些方面,并结合文档中的相关内容进行详细的解释。 ### C#中的Timer #### System....
Java程序中的线程是在操作系统级别的线程基础上进行抽象的。每个Java程序都有一个主线程,即由JVM启动并执行main方法的线程。线程代表了程序中的执行流,可以在不同的线程之间切换以共享CPU时间。线程的状态包括新建...
Java中的定时任务实现通常涉及`java.util.Timer`类和`java.util.TimerTask`类。在本篇文章中,我们将深入探讨如何使用这些类来创建和管理定时任务。 首先,`java.util.Timer`是一个线程类,用于调度在将来某个时间...
Java Timer 定时每天凌晨1点执行任务 在Java中,Timer类是一个非常有用的工具类,它可以帮助我们实现定时任务的执行。在本篇文章中,我们将学习如何使用Java Timer来实现每天凌晨1点执行任务的功能。 首先,让我们...
6. **定时器与定时任务**:时钟需要定期更新,这可能涉及到了Java的`java.util.Timer`类或者`ScheduledExecutorService`。这些类可以用来安排任务在特定时间执行,比如每秒更新一次时钟显示。 7. **异常处理**:在...
- 任务执行的精确性:由于系统调度和线程上下文切换的影响,定时任务的执行时间可能会有所偏差。 - 程序关闭时的资源释放:确保在程序退出时取消所有定时任务,以避免后台线程继续运行,导致资源泄露。 - 错误处理:...
### Java里timer执行定时任务 #### 一、延时执行 在Java中,`java.util.Timer` 类提供了创建和管理定时任务的功能。如果需要在特定时间之后执行某个任务,可以利用 `Timer` 类的 `schedule()` 方法。此方法接受一...
在Java编程中,多线程是...综上所述,实现“java多线程模拟时钟显示”需要掌握Java多线程编程的基础知识,包括线程创建、同步控制、定时更新以及GUI编程等。通过这个项目,开发者可以提升对并发编程的理解和实践能力。
Java Timer定时器详解 Java Timer定时器是Java语言中的一种常用的定时器机制,它可以帮助开发者实现一些需要在特定时间或特定间隔执行的任务。Java Timer定时器主要是通过java.util.Timer和java.util.TimerTask两个...
### Java线程详解 在Java开发中,线程(Thread)是执行程序的基本单位,它是一种轻量级的进程,可以实现并发操作,提高程序的运行效率。本篇内容将围绕Java线程的基础知识、创建方式、生命周期以及线程同步等核心...
在Java编程语言中,`Timer`和`TimerTask`是两个关键类,它们构成了Java的定时执行机制。这两个类在处理周期性任务或者延迟任务时非常有用,它们可以帮助开发者实现程序在特定时间点或者按照一定间隔执行特定操作的...
在Delphi编程环境中,系统自带的TTimer组件虽然方便,但在某些复杂场景下,例如需要在定时器触发事件时执行耗时操作,可能会导致应用程序的UI线程阻塞,出现界面卡顿的问题。为了解决这个问题,开发者有时会编写...
在IT领域,时钟Timer是一种重要的编程概念,尤其在实时系统、游戏开发、网络应用以及各种需要定时执行任务的场景中。它是一个可以设定特定时间间隔后触发事件或执行特定功能的对象。本篇文章将深入探讨时钟Timer的...
另一种常见的方法是利用Timer控件,通过定时触发事件来模拟多线程。尽管这不是真正的多线程,但在某些情况下可以达到类似的效果。具体操作流程如下: 1. 添加Timer控件:在VB界面设计时,添加一个Timer控件到窗体上...
在VC++编程中,我们经常会遇到需要执行定时任务的情况,这时可以使用TIMER或者多线程来实现。然而,这两种方式在性能和使用场景上存在显著差异。本篇将详细探讨VC++中TIMER与多线程的对比。 首先,让我们了解什么是...