System.nanoTime
System.currentTimeMillis()返回的毫秒,這個毫秒其實就是自1970年1月1日0時起的毫秒數。
System.nanoTime()返回的是納秒,nanoTime而返回的可能是任意時間,甚至可能是負數。
?
System.currentTimeMillis調用的是native方法,使用的是系統的時間,每個JVM對應的應該是相同的,但因為具體的取值依賴于操作系統的實現,不同JVM間可能會有略微的差異。
System.nanoTime每個JVM維護一份,和系統時間無關,可用于計算時間間隔,比System.currentTimeMillis的精度要高。
?
修改了系統時間會對System.currentTimeMillis造成影響,而對System.nanoTime沒有影響。修改系統時間后會有如下效果:Timmer有影響,Thread.sleep有影響,ScheduledThreadPoolExecutor無影響,可以查看方法的實現調用的是System.currentTimeMillis還是System.nanoTime。
?
java修改系統時間:
1.windows環境下:
Runtime.getRuntime().exec("cmd /c date 2013-05-06");//Windows 系統
Runtime.getRuntime().exec("cmd /c time 22:35:00");//Windows 系統
2.linux環境下:
Runtime.getRuntime().exec(" sudo date -s 2013-05-06")//linux 系統為tomcat用戶分配了權限
Runtime.getRuntime().exec(" sudo date -s 22:25:00")//linux 系統為tomcat用戶分配了權限
?
Linux上獲取的時間不正確,總是相差幾小時考慮時差的問題,修改/etc/sysconfig/clock。
轉載于:https://www.cnblogs.com/lnlvinso/p/5191446.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的System.nanoTime的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 父亲节的祝福话语简短合集238个
- 下一篇: 嘹亮歌声教案一等奖