java Timer 定時迴圈執行緒造成系統時鐘混亂

2021-08-30 09:27:54 字數 546 閱讀 5728

問題的現象描述: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為例:

-xx:+forcetimehighresolution

重新啟動tomcat即可。

while迴圈 執行緒池

public class volatiletest2 catch interruptedexception e system.out.println thread.currentthread getname ticket executorservice.shutdown 自己寫了這樣一段 本來以為執...

java Timer 定時任務

schedule的四種用法 schedule task,time 在時間等於或者超過time的時候,執行並且執行一次task schedule task,time,period time 首次執行任務的時間 period 執行一次task的時間間隔 schedule task,delay 等待del...

Java Timer原始碼解析(定時器原始碼解析)

timer顧名思義就是定時器,用於處理一些需要延時處理的任務,延時時間可能是1s,也可能是5天。一般使用方式如下 timertask task new timertask timer timer new timer timer.schedule task,new date 1000 從上面 看來,主...