As Dmitry P mentioned System.currentTimeMillis() is JVM intrinsic. Moreover, there is a daemon thread that updates the internal value which will not be needed after the change.
If we remove U.currentTimeMillis() code will become more clear and consistent. Why we think that we can implement this particular timer better than JVM developers? Vladmir, can you please share a benchmark that will show the problems? If it will then it will be a strong argument to keep the current implementation. --Yakov