# HG changeset patch # User bpb # Date 1422321417 28800 # Node ID a5b9168af1bb03add6abedffa8e5a4205680f49a # Parent 2245cc40bf5dccee3d968dfee84766d2aab416e9 8069269: (spec) Defect in the System.nanoTime spec Summary: Change the description of how to compare two nanoTime values. Reviewed-by: martin diff -r 2245cc40bf5d -r a5b9168af1bb jdk/src/java.base/share/classes/java/lang/System.java --- a/jdk/src/java.base/share/classes/java/lang/System.java Mon Jan 26 17:26:49 2015 +0000 +++ b/jdk/src/java.base/share/classes/java/lang/System.java Mon Jan 26 17:16:57 2015 -0800 @@ -376,19 +376,16 @@ * the difference between two such values, obtained within the same * instance of a Java virtual machine, is computed. * - *
For example, to measure how long some code takes to execute: - *
{@code + ** - *For example, to measure how long some code takes to execute: + *
{@code * long startTime = System.nanoTime(); * // ... the code being measured ... - * long estimatedTime = System.nanoTime() - startTime;}+ * long elapsedNanos = System.nanoTime() - startTime;}
To compare two nanoTime values - *
{@code - * long t0 = System.nanoTime(); - * ... - * long t1 = System.nanoTime();}- * - * one should use {@code t1 - t0 < 0}, not {@code t1 < t0}, + *
To compare elapsed time against a timeout, use
{@code + * if (System.nanoTime() - startTime >= timeoutNanos) ...}+ * instead of
{@code + * if (System.nanoTime() >= startTime + timeoutNanos) ...}* because of the possibility of numerical overflow. * * @return the current value of the running Java Virtual Machine's