Use System.nanoTime() instead of System.currentTimeMillis()