Use System.currentTimeMillis() instead of System.nanoTime() to protect
against incorrect values if times are ever compared between different JVM nodes