模块  java.base
软件包  java.util.concurrent

Enum TimeUnit

  • 实现的所有接口
    SerializableComparable<TimeUnit>

    public enum TimeUnit
    extends Enum<TimeUnit>
    TimeUnit表示给定粒度单位的持续时间,并提供跨单元转换的实用方法,以及在这些单元中执行定时和延迟操作。 TimeUnit不保留时间信息,但仅帮助组织和使用可在各种上下文中单独维护的时间表示。 纳秒定义为千分之一微秒,微秒为千分之一毫秒,毫秒为千分之一秒,一分钟为六十秒,一小时为六十分钟,一天为二十四小时。

    TimeUnit主要用于通知基于时间的方法如何解释给定的定时参数。 例如,如果lock不可用,则以下代码将在50毫秒内超时:

       Lock lock = ...; if (lock.tryLock(50L, TimeUnit.MILLISECONDS)) ... 
    而此代码将在50秒内超时:
       Lock lock = ...; if (lock.tryLock(50L, TimeUnit.SECONDS)) ... 
    但请注意,无法保证特定的超时实现能够以与给定的TimeUnit相同的粒度注意到时间的TimeUnit
    从以下版本开始:
    1.5
    • Enum Constant Detail

      • NANOSECONDS

        public static final TimeUnit NANOSECONDS
        时间单位代表千分之一微秒。
      • MICROSECONDS

        public static final TimeUnit MICROSECONDS
        时间单位代表千分之一毫秒。
      • MILLISECONDS

        public static final TimeUnit MILLISECONDS
        时间单位代表千分之一秒。
      • SECONDS

        public static final TimeUnit SECONDS
        时间单位代表一秒。
      • MINUTES

        public static final TimeUnit MINUTES
        时间单位代表六十秒。
        从以下版本开始:
        1.6
      • HOURS

        public static final TimeUnit HOURS
        时间单位代表六十分钟。
        从以下版本开始:
        1.6
      • DAYS

        public static final TimeUnit DAYS
        时间单位代表二十四小时。
        从以下版本开始:
        1.6
    • 方法详细信息

      • values

        public static TimeUnit[] values()
        按照声明的顺序返回一个包含此枚举类型常量的数组。 此方法可用于迭代常量,如下所示:
          for (TimeUnit c : TimeUnit.values())
            System.out.println(c); 
        结果
        包含此枚举类型常量的数组,按声明的顺序排列
      • valueOf

        public static TimeUnit valueOf​(String name)
        返回具有指定名称的此类型的枚举常量。 该字符串必须与用于声明此类型中的枚举常量的标识符完全匹配。 (不允许使用无关的空白字符。)
        参数
        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 unitunit.convert(Duration.ofNanos(n))相当于unit.convert(n, NANOSECONDS) ,和unit.convert(Duration.of(n, unit.toChronoUnit()))相当于n (在没有溢出的)。

        API Note:
        此方法与Duration.toNanos()不同之处在于它不会在数字溢出时抛出ArithmeticException
        参数
        duration - duration时间
        结果
        转换的持续时间在此单位,或 Long.MIN_VALUE如果转换将负溢出,或 Long.MAX_VALUE如果它会积极溢出。
        异常
        NullPointerException - 如果 duration为空
        从以下版本开始:
        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 这是一种便捷方法,可将超时参数转换为Object.wait方法所需的Object.wait

        例如,您可以使用poll方法实现阻止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 这是一种便捷方法,可将时间参数转换为Thread.join方法所需的Thread.join
        参数
        thread - 等待的主题
        timeout - 等待的最长时间。 如果小于或等于零,则不要等待。
        异常
        InterruptedException - 等待时中断
      • sleep

        public void sleep​(long timeout)
                   throws InterruptedException
        使用此时间单位执行Thread.sleep 这是一种便捷方法,可将时间参数转换为Thread.sleep方法所需的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为空
        从以下版本开始:
        9