当前位置:首页 > 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接口
结合线程池计算异步任务耗时:

java如何计时

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的步骤 理解基础知识 从Java的基本语法开始,包括变量、数据类型、运算符、控制流(if-else、循环)等。掌握这些基础概念是后续学习的基石。 学习面向对象编程(OOP) Java是一…

java如何调用接口

java如何调用接口

调用接口的基本方法 在Java中调用接口通常涉及实现接口或使用接口引用对象。以下是几种常见场景的示例: 定义接口 public interface MyInterface { void d…

java中如何输入

java中如何输入

输入方法 在Java中,可以通过多种方式实现输入操作,具体取决于输入来源和需求。以下是几种常见的输入方法: 使用Scanner类 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读…

如何学习好java

如何学习好java

掌握Java基础知识 学习Java的第一步是掌握其基础知识,包括数据类型、变量、运算符、控制流语句(如if-else、for循环、while循环)以及数组。这些是构建更复杂程序的基石。可以通过在线教程…

php 实现 java md5

php 实现 java md5

在 PHP 中实现与 Java 相同的 MD5 哈希算法,关键在于确保编码和输出格式的一致性。以下是具体实现方法和注意事项: 确保字符串编码一致 Java 的 String.getBytes() 默…

java 实现 php ord

java 实现 php ord

Java 实现 PHP 的 ord 函数 PHP 的 ord 函数用于获取字符串中第一个字符的 ASCII 值。在 Java 中,可以通过类型转换或直接使用字符的 Unicode 值实现类似功能。…