モジュール java.base
パッケージ java.util.concurrent

列挙型クラスTimeUnit

java.lang.Object
java.lang.Enum<TimeUnit>
java.util.concurrent.TimeUnit
すべての実装されたインタフェース:
Serializable, Comparable<TimeUnit>, Constable

public enum TimeUnit extends Enum<TimeUnit>
TimeUnitは、指定された粒度単位で時間を表し、単位を変換したり、それらの単位でタイミングおよび遅延操作を実行したりするユーティリティ・メソッドを提供します。 TimeUnitは、時間情報を保持せず、さまざまなコンテキスト間で独立して保持される時間表現の整理および使用だけを行うことができます。 ナノ秒はマイクロ秒の1000分の1、マイクロ秒はミリ秒の1000分の1、ミリ秒は秒の1000分の1、分は60秒、時は60分、日は24時間としてそれぞれ定義されます。

TimeUnitは、主に時間ベースのメソッドに対して、指定されたタイミング・パラメータの解釈方法を指示するために使用します。 たとえば、lockが使用できない場合、次のコードは50ミリ秒でタイム・アウトします。

 
 Lock lock = ...;
 if (lock.tryLock(50L, TimeUnit.MILLISECONDS)) ...
一方、次のコードは、50秒でタイム・アウトします。
 
 Lock lock = ...;
 if (lock.tryLock(50L, TimeUnit.SECONDS)) ...
ただし、特定のタイム・アウト実装で、指定されたTimeUnitと同じ粒度で時間経過を通知できる保証はないことに注意してください。

導入されたバージョン:
1.5
  • 列挙型定数の詳細

    • NANOSECONDS

      public static final TimeUnit NANOSECONDS
      マイクロ秒の1000分の1を表す時間単位
    • MICROSECONDS

      public static final TimeUnit MICROSECONDS
      ミリ秒の1000分の1を表す時間単位
    • MILLISECONDS

      public static final TimeUnit MILLISECONDS
      秒の1000分の1を表す時間単位
    • SECONDS

      public static final TimeUnit SECONDS
      1秒を表す時間単位
    • MINUTES

      public static final TimeUnit MINUTES
      60秒を表す時間単位
      導入されたバージョン:
      1.6
    • HOURS

      public static final TimeUnit HOURS
      60分を表す時間単位
      導入されたバージョン:
      1.6
    • DAYS

      public static final TimeUnit DAYS
      24時間を表す時間単位
      導入されたバージョン:
      1.6
  • メソッドの詳細

    • values

      public static TimeUnit[] values()
      この列挙クラスの定数を含む配列を宣言されている順序で 返します。
      戻り値:
      この列挙クラスの定数を宣言されている順序で含む配列
    • valueOf

      public static TimeUnit valueOf(String name)
      指定された名前を持つこのクラスのenum定数を返します。 文字列は、このクラスでenum定数を宣言するために使用される識別子とexactlyと一致する必要があります。 (不適切な空白文字は許可されません。)
      パラメータ:
      name - 返される列挙型定数の名前。
      戻り値:
      指定された名前を持つ列挙型定数
      例外:
      IllegalArgumentException - この列挙型クラスに指定された名前の定数がない場合
      NullPointerException - 引数がnullの場合
    • convert

      public long convert(long sourceDuration, TimeUnit sourceUnit)
      指定された単位による指定されたデュレーションを、この単位に変換します。 粒度の細かいほうから粗いほうへの変換では切詰めが発生するため、精度が失われます。 たとえば、999ミリ秒を秒に変換すると0になります。 粒度の粗いほうから細かいほうへの変換で、数値的にオーバーフローが発生する引数を指定すると、負の場合はLong.MIN_VALUE、正の場合はLong.MAX_VALUEになります。

      たとえば、10分をミリ秒に変換するには、TimeUnit.MILLISECONDS.convert(10L, TimeUnit.MINUTES)を使用します。

      パラメータ:
      sourceDuration - 指定されたsourceUnitでのデュレーション
      sourceUnit - sourceDuration引数の単位
      戻り値:
      この単位での変換されたデュレーション。変換が負にオーバーフローする場合はLong.MIN_VALUE、正にオーバーフローする場合はLong.MAX_VALUE
    • convert

      public long convert(Duration duration)
      指定された期間をこの単位に変換します。

      TimeUnit unitでは、unit.convert(Duration.ofNanos(n))unit.convert(n, NANOSECONDS)と同等、およびunit.convert(Duration.of(n, unit.toChronoUnit()))n (オーバーフローがない場合)と同等です。

      APIのノート:
      このメソッドは数値オーバーフローでArithmeticExceptionをスローしない点でDuration.toNanos()と異なります。
      パラメータ:
      duration - 期間
      戻り値:
      この単位での変換されたデュレーション。変換が負にオーバーフローする場合はLong.MIN_VALUE、正にオーバーフローする場合はLong.MAX_VALUE
      例外:
      NullPointerException - durationがnullの場合
      導入されたバージョン:
      11
      関連項目:
      Duration.of(long,TemporalUnit)
    • toNanos

      public long toNanos(long duration)
      パラメータ:
      duration - デュレーション
      戻り値:
      変換されたデュレーション。変換が負にオーバーフローする場合はLong.MIN_VALUE、正にオーバーフローする場合はLong.MAX_VALUE
    • toMicros

      public long toMicros(long duration)
      パラメータ:
      duration - デュレーション
      戻り値:
      変換されたデュレーション。変換が負にオーバーフローする場合はLong.MIN_VALUE、正にオーバーフローする場合はLong.MAX_VALUE
    • toMillis

      public long toMillis(long duration)
      パラメータ:
      duration - デュレーション
      戻り値:
      変換されたデュレーション。変換が負にオーバーフローする場合はLong.MIN_VALUE、正にオーバーフローする場合はLong.MAX_VALUE
    • toSeconds

      public long toSeconds(long duration)
      パラメータ:
      duration - デュレーション
      戻り値:
      変換されたデュレーション。変換が負にオーバーフローする場合はLong.MIN_VALUE、正にオーバーフローする場合はLong.MAX_VALUE
    • toMinutes

      public long toMinutes(long duration)
      パラメータ:
      duration - デュレーション
      戻り値:
      変換されたデュレーション。変換が負にオーバーフローする場合はLong.MIN_VALUE、正にオーバーフローする場合はLong.MAX_VALUE
      導入されたバージョン:
      1.6
    • toHours

      public long toHours(long duration)
      パラメータ:
      duration - デュレーション
      戻り値:
      変換されたデュレーション。変換が負にオーバーフローする場合はLong.MIN_VALUE、正にオーバーフローする場合はLong.MAX_VALUE
      導入されたバージョン:
      1.6
    • toDays

      public long toDays(long duration)
      パラメータ:
      duration - デュレーション
      戻り値:
      変換されたデュレーション
      導入されたバージョン:
      1.6
    • timedWait

      public void timedWait(Object obj, long timeout) throws InterruptedException
      この時間単位を使用して、時間指定されたObject.waitを実行します。 このメソッドは、timeout引数をObject.waitメソッドで要求される形式に変換する簡易メソッドです。

      たとえば、次を使用して、ブロックするpollメソッドを実装できます(BlockingQueue.pollを参照)。

       
       public E poll(long timeout, TimeUnit unit)
           throws InterruptedException {
         synchronized (lock) {
           while (isEmpty()) {
             unit.timedWait(lock, timeout);
             ...
           }
         }
       }

      パラメータ:
      obj - 待機するオブジェクト
      timeout - 待機する最長時間。 ゼロまたはそれより小さい場合は待機しない。
      例外:
      InterruptedException - 待機中に割込みが発生した場合
    • timedJoin

      public void timedJoin(Thread thread, long timeout) throws InterruptedException
      この時間単位を使用して、時間指定されたThread.joinを実行します。 このメソッドは、time引数をThread.joinメソッドで要求される形式に変換する簡易メソッドです。
      パラメータ:
      thread - 待機するスレッド
      timeout - 待機する最長時間。 ゼロまたはそれより小さい場合は待機しない。
      例外:
      InterruptedException - 待機中に割込みが発生した場合
    • sleep

      public void sleep(long timeout) throws InterruptedException
      この時間単位を使用して、Thread.sleepを実行します。 これは、time引数をThread.sleepメソッドで要求される形式に変換する簡易メソッドです。
      パラメータ:
      timeout - スリープする最小時間。 ゼロまたはそれより小さい場合はスリープしない。
      例外:
      InterruptedException - スリープ中に割込みが発生した場合
    • toChronoUnit

      public ChronoUnit toChronoUnit()
      このTimeUnitを同等のChronoUnitに変換します。
      戻り値:
      変換された同等のChronoUnit
      導入されたバージョン:
      9
    • of

      public static TimeUnit of(ChronoUnit chronoUnit)
      ChronoUnitを同等のTimeUnitに変換します。
      パラメータ:
      chronoUnit - 変換するChronoUnit
      戻り値:
      変換された同等のTimeUnit
      例外:
      IllegalArgumentException - chronoUnitに相当するTimeUnitがない場合
      NullPointerException - chronoUnitがnullの場合
      導入されたバージョン:
      9