用匿名内部类计算方法执行时间
2026/5/30 8:07:07 网站建设 项目流程

要实现 “计算任意方法执行时间” 这个功能,关键在于解耦计时逻辑和业务逻辑

  1. 定义一个接口:用来代表 “需要执行的任务”。
  2. 编写计时工具类:统一处理 “开始计时、执行任务、结束计时、计算耗时” 的流程。
  3. 使用匿名内部类:在调用计时工具时,临时实现任务接口,把我们要测试的业务代码 “塞” 进去。

代码示例:

1. 定义任务接口

public interface TimeTask { void execute(); }

2. 编写计时工具类

import java.util.concurrent.TimeUnit; /** * 计时工具类,负责测量任务的执行时间 */ public class TimeUtil { /** * 测量任务的执行时间,并打印结果 * @param task 要执行的任务(通过匿名内部类传入) */ public static void measureTime(TimeTask task) { // 1. 记录开始时间(纳秒级,精度更高) long startNano = System.nanoTime(); // 2. 执行传入的任务 task.execute(); // 3. 记录结束时间 long endNano = System.nanoTime(); // 4. 计算耗时并转换为秒 long durationNano = endNano - startNano; double durationSeconds = durationNano / 1_000_000_000.0; // 5. 打印结果,保留4位小数 System.out.printf("方法执行耗时:%.4f 秒%n", durationSeconds); } }

3. 主程序调用(匿名内部类登场!)

public class Homework1 { public static void main(String[] args) { System.out.println("开始测试第一个任务:模拟循环计算..."); // 核心:使用匿名内部类,直接实现TimeTask接口 TimeUtil.measureTime(new TimeTask() { @Override public void execute() { // 这里写你要测试的业务代码 long sum = 0; for (int i = 0; i < 100_000_000; i++) { sum += i; } System.out.println("循环计算完成,sum = " + sum); } }); System.out.println("\n开始测试第二个任务:模拟网络延迟..."); // 再测试一个任务,同样用匿名内部类 TimeUtil.measureTime(new TimeTask() { @Override public void execute() { try { // 模拟耗时操作,比如Thread.sleep Thread.sleep(1500); // 休眠1.5秒 } catch (InterruptedException e) { e.printStackTrace(); } } }); } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询