Java计时功能实现方法详解及代码示例疑问?
- 后端开发
- 2025-09-21
- 7
Java的计时功能可以通过多种方式实现,以下是一些常用的方法:
使用System.currentTimeMillis()
System.currentTimeMillis()方法返回自1970年1月1日00:00:00 GMT以来的毫秒数,通过计算两次调用之间的差值,可以获取运行时间。

使用System.nanoTime()
System.nanoTime()方法返回一个较精确的时间值,它返回从某个不固定的起点到现在的纳秒数,这种方法适合计算短时间内的运行时间。
public class TimeCounter { public static void main(String[] args) { long startTime = System.nanoTime(); // 执行需要计时的代码 // ... long endTime = System.nanoTime(); long duration = endTime startTime; System.out.println("运行时间:" + duration + "纳秒"); } }
使用java.util.Timer和java.util.TimerTask
Timer和TimerTask是Java提供的一个计时器功能,可以安排任务在未来的某个时间点执行,或者每隔一定时间执行。
import java.util.Timer; import java.util.TimerTask; public class TimeCounter { public static void main(String[] args) { Timer timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run() { // 执行需要计时的代码 // ... System.out.println("任务执行完毕"); } }; timer.schedule(task, 5000); // 5秒后执行任务 } }
使用java.util.concurrent.Executors和java.util.concurrent.ScheduledExecutorService
ScheduledExecutorService是Executors工具类提供的一个定时任务执行器,可以安排任务在未来的某个时间点执行,或者每隔一定时间执行。

import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class TimeCounter { public static void main(String[] args) { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); executor.scheduleAtFixedRate(() > { // 执行需要计时的代码 // ... System.out.println("定时任务执行完毕"); }, 0, 5, TimeUnit.SECONDS); // 5秒后开始执行,之后每隔5秒执行一次 } }
使用java.time包
Java 8引入了新的日期和时间API,包括LocalDateTime、ZonedDateTime等类,可以方便地进行日期和时间的计算。
import java.time.LocalDateTime; public class TimeCounter { public static void main(String[] args) { LocalDateTime startTime = LocalDateTime.now(); // 执行需要计时的代码 // ... LocalDateTime endTime = LocalDateTime.now(); long duration = java.time.Duration.between(startTime, endTime).toMillis(); System.out.println("运行时间:" + duration + "毫秒"); } }
FAQs
Q1:Java中哪种计时方法最准确?

A1:System.nanoTime()方法通常被认为是最准确的,因为它返回的是从某个不固定的起点到现在的纳秒数,不受系统时钟的影响。
Q2:如何计算代码执行的平均时间?
A2:可以通过多次执行代码并记录总时间,然后除以执行次数来计算平均时间。
public class TimeCounter { public static void main(String[] args) { int iterations = 1000; long totalTime = 0; for (int i = 0; i < iterations; i++) { long startTime = System.nanoTime(); // 执行需要计时的代码 // ... long endTime = System.nanoTime(); totalTime += endTime startTime; } long averageTime = totalTime / iterations; System.out.println("平均运行时间:" + averageTime + "纳秒"); } }