O System.currentTimeMillis () é a melhor medida de desempenho de tempo em Java?

O System.currentTimeMillis () é a melhor medida de desempenho de tempo em Java? Há alguma pegadinha ao usar isso para comparar o tempo antes que a ação seja levada ao tempo após a ação ser tomada? Existe uma alternativa melhor?