< prev index next >
src/java.base/share/classes/java/util/concurrent/TimeUnit.java
Print this page
@@ -33,10 +33,13 @@
* http://creativecommons.org/publicdomain/zero/1.0/
*/
package java.util.concurrent;
+import java.time.temporal.ChronoUnit;
+import java.util.Objects;
+
/**
* A {@code TimeUnit} represents time durations at a given unit of
* granularity and provides utility methods to convert across units,
* and to perform timing and delay operations in these units. A
* {@code TimeUnit} does not maintain time information, but only
@@ -388,6 +391,64 @@
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
+ /**
+ * Converts this {@code TimeUnit} to an equivalent {@code ChronoUnit}.
+ *
+ * @return the converted equivalent ChronoUnit
+ * @throws IllegalArgumentException if this TimeUnit cannot be converted
+ * @since 9
+ */
+ public ChronoUnit toChronoUnit() {
+ switch (this) {
+ case NANOSECONDS:
+ return ChronoUnit.NANOS;
+ case MICROSECONDS:
+ return ChronoUnit.MICROS;
+ case MILLISECONDS:
+ return ChronoUnit.MILLIS;
+ case SECONDS:
+ return ChronoUnit.SECONDS;
+ case MINUTES:
+ return ChronoUnit.MINUTES;
+ case HOURS:
+ return ChronoUnit.HOURS;
+ case DAYS:
+ return ChronoUnit.DAYS;
+ default:
+ throw new IllegalArgumentException("Unknown TimeUnit");
+ }
+ }
+
+ /**
+ * Converts a {@code ChronoUnit} to an equivalent {@code TimeUnit}.
+ *
+ * @param chronoUnit the ChronoUnit to convert, not null
+ * @return the converted equivalent TimeUnit
+ * @throws IllegalArgumentException if {@code chronoUnit} cannot be converted
+ * @since 9
+ */
+ public static TimeUnit of(ChronoUnit chronoUnit) {
+ Objects.requireNonNull(chronoUnit, "chronoUnit");
+ switch (chronoUnit) {
+ case NANOS:
+ return TimeUnit.NANOSECONDS;
+ case MICROS:
+ return TimeUnit.MICROSECONDS;
+ case MILLIS:
+ return TimeUnit.MILLISECONDS;
+ case SECONDS:
+ return TimeUnit.SECONDS;
+ case MINUTES:
+ return TimeUnit.MINUTES;
+ case HOURS:
+ return TimeUnit.HOURS;
+ case DAYS:
+ return TimeUnit.DAYS;
+ default:
+ throw new IllegalArgumentException("No TimeUnit equivalent for " + chronoUnit);
+ }
+ }
+
}
< prev index next >