言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Java辞典

  1. トップページ
  2. Java辞典
  3. System.currentTimeMillis() / System.nanoTime() / System.exit()

System.currentTimeMillis() / System.nanoTime() / System.exit()

対応: Java 1.0(1996)

システムの時刻取得・時間計測・プロセス制御を行うメソッドです。処理時間の計測には『System.nanoTime()』が推奨されます。

構文

// 現在時刻をUNIXエポック(1970-01-01 00:00:00 UTC)からのミリ秒で返します
long millis = System.currentTimeMillis();

// 高精度な経過時間の計測に使います(絶対時刻ではありません)
long nano = System.nanoTime();

// JVMを終了します(0は正常終了、0以外は異常終了)
System.exit(int status);

// ガベージコレクションの実行を要求します(実行を保証しません)
System.gc();

// 環境変数を取得します
String path = System.getenv("PATH");

// システムプロパティを取得します
String osName = System.getProperty("os.name");
String javaVer = System.getProperty("java.version");

主なメソッド一覧

メソッド概要
System.currentTimeMillis()現在時刻をUNIXエポックからのミリ秒(long型)で返します。
System.nanoTime()ナノ秒単位の高精度な経過時間を返します。起点は任意で、絶対時刻ではありません。処理時間計測に使います。
System.exit(int status)JVMを終了します。0 は正常終了、それ以外は異常終了を示します。
System.gc()ガベージコレクタの実行を要求しますが、実行タイミングはJVM次第です。
System.getenv(String name)指定した環境変数の値を取得します。存在しない場合は null を返します。
System.getProperty(String key)システムプロパティ(OS名・Javaバージョンなど)を取得します。
System.arraycopy(src, srcPos, dest, destPos, length)配列の一部を別の配列に高速コピーします。
System.lineSeparator()OSに応じた改行文字(\n または \r\n)を返します。

サンプルコード

sample_SystemCurrenttimemillis.java
import java.util.Date;

class SystemCurrenttimemillis {
    public static void main(String[] args) {
        // nanoTime() で処理時間を計測します
        long start = System.nanoTime();
        long sum = 0;
        for (int i = 0; i < 1_000_000; i++) sum += i;
        long end = System.nanoTime();
        System.out.println("合計: " + sum);
        System.out.printf("処理時間: %.3f ms%n", (end - start) / 1_000_000.0);
        // 例: 『処理時間: 2.456 ms』と出力されます

        // currentTimeMillis() で現在時刻をミリ秒で取得します
        long now = System.currentTimeMillis();
        System.out.println("現在時刻(ms): " + now); // UNIXエポックからのミリ秒が出力されます。

        // getProperty() でシステム情報を取得します
        System.out.println(System.getProperty("os.name"));       // 例: 『Mac OS X』と出力されます。
        System.out.println(System.getProperty("java.version"));  // 例: 『21.0.2』と出力されます。
        System.out.println(System.getProperty("user.home"));      // ホームディレクトリのパスが出力されます。

        // arraycopy() で配列を高速コピーします
        int[] src  = {1, 2, 3, 4, 5};
        int[] dest = new int[5];
        System.arraycopy(src, 1, dest, 0, 3);
        System.out.println(java.util.Arrays.toString(dest)); // 『[2, 3, 4, 0, 0]』と出力されます。
    }
}
SystemCurrenttimemillis.java
javac SystemCurrenttimemillis.java
java SystemCurrenttimemillis
合計: 499999500000
[2, 3, 4, 0, 0]

※ 処理時間・現在時刻・システムプロパティは実行環境によって異なる値になります。

概要

処理時間の計測には『System.currentTimeMillis()』より精度の高い『System.nanoTime()』を使うことが推奨されます。nanoTime() の戻り値はシステム起点からの経過ナノ秒であり、異なる呼び出し間の差分のみが意味を持ちます。

『System.exit()』はJVM全体を即座に終了させるため、try-finally ブロックや シャットダウンフックが実行されない場合があります。通常のアプリケーションでは使用を避け、例外処理で制御してください。

標準出力への書き出しには『System.out.println() / System.err.println()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。