当前位置:首页 > Java

java如何计时

2026-03-03 22:58:52Java

计时方法

System.currentTimeMillis()
获取当前时间的毫秒数,适用于简单计时场景。计算差值即可得到耗时:

long startTime = System.currentTimeMillis();
// 执行代码
long endTime = System.currentTimeMillis();
long duration = endTime - startTime; // 单位:毫秒

System.nanoTime()
提供纳秒级精度,适合高精度计时需求。注意此方法不保证与系统时间相关:

long startTime = System.nanoTime();
// 执行代码
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000; // 转换为毫秒

工具类实现

StopWatch(Spring框架)
Spring提供的计时工具类,支持多任务分段计时:

StopWatch stopWatch = new StopWatch();
stopWatch.start("task1");
// 执行任务1
stopWatch.stop();
stopWatch.start("task2");
// 执行任务2
stopWatch.stop();
System.out.println(stopWatch.prettyPrint());

自定义计时器
通过封装实现复用性更高的计时逻辑:

public class TimerUtil {
    private long start;

    public void start() {
        this.start = System.currentTimeMillis();
    }

    public long stop() {
        return System.currentTimeMillis() - start;
    }
}

多线程计时

Future接口
结合线程池计算异步任务耗时:

ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future = executor.submit(() -> {
    // 异步任务代码
});
long start = System.nanoTime();
future.get(); // 阻塞等待完成
long duration = (System.nanoTime() - start) / 1_000_000;

注意事项

  • 避免在循环中频繁创建计时对象,优先复用实例
  • 对于短时间测量(<1ms),推荐使用nanoTime()
  • 多线程环境下确保计时逻辑的线程安全性

java如何计时

标签: java
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java如何使用

java如何使用

Java 基本使用方法 Java 是一种广泛使用的编程语言,适用于开发各种类型的应用程序。以下是 Java 的基本使用方法,包括环境配置、语法基础和常用操作。 安装 Java 开发环境 下载并安装…

java如何调用方法

java如何调用方法

调用方法的基本语法 在Java中,调用方法需要明确方法所属的对象(实例方法)或类(静态方法),并传递必要的参数。语法格式如下: 实例方法:对象名.方法名(参数列表); 静态方法:类名.方法…

如何自学java

如何自学java

选择合适的学习资源 从官方文档开始,Oracle提供的Java官方教程(Java Tutorials)是权威且免费的学习资料。在线平台如Codecademy、Coursera或Udemy提供互动式课程…

如何编写java程序

如何编写java程序

安装开发环境 下载并安装JDK(Java Development Kit),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH正确设置。…