1. 程式人生 > >System.nanoTime與System.currentTimeMillis的區別

System.nanoTime與System.currentTimeMillis的區別

        平時產生隨機數時我們經常拿時間做種子,比如用System.currentTimeMillis的結果,但是在執行一些迴圈中使用了System.currentTimeMillis,那麼每次的結果將會差別很小,甚至一樣,因為現代的計算機執行速度很快。後來看到java中產生隨機數函式以及執行緒池中的一些函式使用的都是System.nanoTime,下面說一下這2個方法的具體區別。

        System.nanoTime提供相對精確的計時,但是不能用他來計算當前日期,在jdk中的說明如下:

      public static long nanoTime()
返回最準確的可用系統計時器的當前值,以毫微秒為單位。

此方法只能用於測量已過的時間,與系統或鐘錶時間的其他任何時間概念無關。返回值表示從某一固定但任意的時間算起的毫微秒數(或許從以後算起,所以該值可能為負)。此方法提供毫微秒的精度,但不是必要的毫微秒的準確度。它對於值的更改頻率沒有作出保證。在取值範圍大於約 292 年(263 毫微秒)的連續呼叫的不同點在於:由於數字溢位,將無法準確計算已過的時間。

例如,測試某些程式碼執行的時間長度:

   long startTime = System.nanoTime();
   // ... the code being measured ...
   long estimatedTime = System.nanoTime() - startTime;
 
返回:
系統計時器的當前值,以毫微秒為單位。
從以下版本開始:
1.5

            System.currentTimeMillis返回的是從1970.1.1 UTC 零點開始到現在的時間,精確到毫秒,平時我們可以根據System.currentTimeMillis來計算當前日期,星期幾等,可以方便的與Date進行轉換,下面時jdk中的介紹:

public static long currentTimeMillis()
返回以毫秒為單位的當前時間。注意,當返回值的時間單位是毫秒時,值的粒度取決於底層作業系統,並且粒度可能更大。例如,許多作業系統以幾十毫秒為單位測量時間。

請參閱 Date

 類的描述,瞭解可能發生在“計算機時間”和協調世界時(UTC)之間的細微差異的討論。

返回:
當前時間與協調世界時 1970 年 1 月 1 日午夜之間的時間差(以毫秒為單位測量)。
所以在使用中,我們可以根據我們具體的目的去正確的選擇他們。

相關推薦

System.nanoTimeSystem.currentTimeMillis區別

        平時產生隨機數時我們經常拿時間做種子,比如用System.currentTimeMillis的結果,但是在執行一些迴圈中使用了System.currentTimeMillis,那麼每次的結果將會差別很小,甚至一樣,因為現代的計算機執行速度很快。後來看到jav

System.getenv() System.getProperty()用法區別

一、[b]java System.getenv()[/b] 與[b]System.getProperty()[/b]用法區別System.getenv()可以得到系統的所有環境變數System.getenv(key)可得到系統的某個環境變數Map map = System.g

System.load()System.loadLibrary()

不同 包括 name 之一 必須 只需要 file get 調用 Java load 和 loadlibrary方法的區別 1. 相同點: 兩個方法都是用來裝載dll文件,不論是JNI庫文件還是非JNI庫文件。本地方法在被調用時都需要通過這兩發方法之一將其加載至內存。 2

深入學習java原始碼之System.console()System.load()

深入學習java原始碼之System.console()與System.load() System類包含幾個有用的類欄位和方法。 它不能被例項化。  System類提供的System包括標準輸入,標準輸出和錯誤輸出流; 訪問外部定義的屬性和環境變數; 一種載入檔案和庫的方法; 以及用於

簡述System.Windows.Forms.Timer System.Timers.Timer用法區別

new 休眠 由於 多次 ext thread sum delegate pos System.Windows.Forms.Timer   基於窗體應用程序   阻塞同步   單線程   timer中處理時間較長則導致定時誤差極大。 System.Timers.Timer

《[C#] intSystem.Int32有什麽區別

int ima return 基礎 ini nop clas cal black 最近園裏的TeamOne寫了一篇《[C#] int與System.Int32有什麽區別》,發現裏面有不少精彩的評論,所以忍不住想這篇文章總結一下:> 本文的主要參考資料: 1.《理解

java的System.currentTimeMillis()和System.nanoTime

納秒   ns(nanosecond):納秒,  時間單位。一秒的10億分之一,即等於10的負9次方秒。常用作  記憶體讀寫速度的單位,其前面數字越小則表示速度越快。     1納秒=1000  皮秒      1納秒

java 標準輸出標準錯誤 out err 區別 用法 聯絡 java中的outerr區別 System.out和System.err的區別 System.out.println和System.err.println的區別 Java重定向S

/** * The "standard" output stream. This stream is already * open and ready to accept output data. Typically this stream * corresponds

system.exit(0) system.exit(1) 含義區別

s首先他倆都是退出程式的意思: 區別在於:system.exit(0):正常退出,程式正常執行結束退出                    system.exit(1):是非正常退出,就是說無論程式

System.arraycopy 引發的鞏固:物件引用 物件 的區別

作者:林冠巨集 / 指尖下的幽靈 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 部落格:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/

android system.exist(0)finish()的區別

system.exist(0)與finish()的區別,在這裡由於理解不深,只是簡單說一下它倆個應用後的不同效果: finish():用於銷燬掉當前activity,如果該activity是root activity of stack,finish()後雖然會

Arrays.copyof(···)System.arraycopy(···)陣列元素複製區別

他們的區別就是 System.arraycopy不關心你是什麼資料型別,只是完成資料元素複製。Arrays.copyof方法是根據不同型別呼叫System.arraycopy方法完成複製內容。 System.arraycopy方法是一個本地方法的位元組複製函

Java中的時間精度 .System.currentTimeMillis() 、System.nanoTime() 方法 使用

 在Java中可以通過System.currentTimeMillis()或者System.nanoTime() (JDK>=5.0) 方法獲得當前的時間的精確值。但是通過閱讀Javadoc,我們發現這兩個方法並不一定保證得到你所期望的精度。先來看System.currentTimeMillis():

System.Windows.Forms.TimerSystem.Timers.Timer的區別

.NET Framework裡面提供了三種Timer: System.Windows.Forms.Timer System.Timers.Timer System.Threading.Timer VS.Net 2005預設只有一個Timer控制元件,但那是System.

Arrays.copyof(···)System.arraycopy(···)區別

首先觀察先System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)的宣告:public static native void arraycopy(Object src, i

posix訊息佇列system v訊息佇列的區別

/*********************************************************************  * Author  : Samson  * Date    : 04/25/2012  * Test platform:  * 

列印輸出語句:System.out.println("內容"+i+1+"內容");System.out.println("內容"+(i+1)+"內容");的區別

連線符和 “+”運算子區別 測試語句: package com.it.test; public class Test {     public static void main(String[]

IPC- Posixsystem v

同步 linu 一個 tin 減少 ces 鏈接 emctl dia 一、功能上的區別 posix和system v有什麽區別/?現在在應用時應用那一標準浮雲484212 | 瀏覽 243 次 2014-11-06 10:362014-11-19 22:36 最佳答案

SystemRuntime類

應用 load get native blog img 交互 jvm runtime PS: Java程序在不同操作系統上運行時,可能需要取得平臺相關的屬性,或者調用平臺命令來完成特定功能。java提供了System類與Runtime類來與程序的運行平臺進行交互。 Sy

Silverlight & Blend動畫設計系列十:Silverlight中的坐標系統(Coordinate System向量(Vector)運動

過度 highlight 圖片 nbsp mgr ack jpg .com bsp 原文:Silverlight & Blend動畫設計系列十:Silverlight中的坐標系統(Coordinate System)與向量(Vector)運動  如果我們習慣於數學坐