Was there any particular reason that the previous version saved the result of System.currentTimeMillis() before assigning it? Is this a trick for volatile variables or something?
---------- Forwarded message ---------- From: <[email protected]> Date: 18 May 2014 23:27 Subject: svn commit: r1595738 - /logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java To: [email protected] Author: mattsicker Date: Mon May 19 04:27:40 2014 New Revision: 1595738 URL: http://svn.apache.org/r1595738 Log: Revert change to volatile long. Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java?rev=1595738&r1=1595737&r2=1595738&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CoarseCachedClock.java Mon May 19 04:27:40 2014 @@ -16,7 +16,6 @@ */ package org.apache.logging.log4j.core.util; -import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.LockSupport; /** @@ -25,13 +24,14 @@ import java.util.concurrent.locks.LockSu */ public final class CoarseCachedClock implements Clock { private static final CoarseCachedClock instance = new CoarseCachedClock(); - private final AtomicLong millis = new AtomicLong(System.currentTimeMillis()); + // ignore IDE complaints; volatile long is fine + private volatile long millis = System.currentTimeMillis(); private final Thread updater = new Thread("Clock Updater Thread") { @Override public void run() { while (true) { - millis.set(System.currentTimeMillis()); + millis = System.currentTimeMillis(); // avoid explicit dependency on sun.misc.Util LockSupport.parkNanos(1000 * 1000); @@ -62,6 +62,6 @@ public final class CoarseCachedClock imp */ @Override public long currentTimeMillis() { - return millis.get(); + return millis; } } -- Matt Sicker <[email protected]>
