当前位置: 首页 > news >正文

使用匿名内部类优雅地计算方法执行时间

一、 应用场景

在日常开发中,我们经常需要测量某一段代码、一个算法或者一个方法的执行耗时(秒数),以便进行性能优化。为了让这个“时间计数器”能够通用,去测试任何不同的代码块,我们可以借助Java 的匿名内部类来实现。

二、 核心设计思路

  1. 定义接口(Task):创建一个通用的任务接口,里面包含一个抽象方法execute(),用来放置具体的业务代码。

  2. 编写工具方法(computeTime):该方法接收Task接口作为参数。在方法内部:

    • 在调用前利用System.currentTimeMillis()记录开始时间。

    • 执行task.execute()

    • 在调用后再次记录结束时间。

    • 两者相减并除以1000.0,计算出消耗的秒数。

  3. 匿名内部类调用:在main方法中调用工具方法时,直接 new 一个Task接口的匿名内部类,动态地将需要测试的耗时代码写在里面。

三、 完整实现源码

public class test2 {

// 1. 定义一个任务接口
interface Task {
void execute();
}

// 2. 编写计算执行时间的方法
public static void computeTime(Task task) {
long startTime = System.currentTimeMillis();

// 执行具体的任务
task.execute();

long endTime = System.currentTimeMillis();

// 计算耗时(毫秒),并转换为秒
double durationInSeconds = (endTime - startTime) / 1000.0;

System.out.println("\n--------------------------------");
System.out.printf("方法执行完毕,总共耗时: %.3f 秒\n", durationInSeconds);
System.out.println("--------------------------------");
}

public static void main(String[] args) {

// 3. 使用匿名内部类来传递具体的“应用场景”或方法
computeTime(new Task() {
@Override
public void execute() {
System.out.println("正在执行某个耗时的方法...");

try {
// 模拟方法执行耗时,让线程休眠 2.5 秒
Thread.sleep(2500);
} catch (InterruptedException e) {
e.printStackTrace();
}

// 模拟循环操作
long sum = 0;
for (int i = 0; i < 1000000; i++) {
sum += i;
}
System.out.println("耗时方法执行结束,计算结果 sum = " + sum);
}
});

}
}

四、 运行结果展示

http://www.jsqmd.com/news/1045659/

相关文章:

  • Apple Silicon架构革新:Whisky如何实现原生级Windows程序兼容方案
  • 上海企业如何用“全意图GEO”在AI搜索时代建立品牌护城河? - GEO优化
  • 2026广东多元有机弱酸增效剂销售厂家口碑推荐 - 品牌排行榜
  • 2026绍兴2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水
  • Robotaxi红绿灯检测:YOLOv8工程化落地的三层架构与实战陷阱
  • 广州企业如何在AI搜索时代用“全意图GEO”实现逆势增长? - GEO优化
  • AI Agent 类型全解:从学术分类到工业落地,原理、区别、场景与优缺点深度详解
  • 深度解析开源IPTV检查工具:5大高效部署策略与实战指南
  • SQLi-Labs靶场从零搭建到通关全攻略(一):环境搭建与基础四关
  • QtScrcpy终极指南:5分钟实现电脑键鼠控制安卓手机
  • 2026年6月,如何精准联系并选择知名的西安拓展夏令营? - 品牌鉴赏官2026
  • BiliTools:3步将B站视频变成你的个人知识库,AI智能总结让学习效率提升300%
  • AI搜索时代,深圳企业如何用“全意图GEO”抢占7亿用户的第一推荐位? - GEO优化
  • LPC2387 ARM7 MCU深度解析:从核心架构到以太网、USB、CAN实战应用
  • 解锁Obsidian美化潜能:20个CSS片段与主题资源一站式获取指南
  • 北京企业AI搜索生存指南:全意图GEO如何帮你“被AI看见”? - GEO优化
  • Windows系统文件msvcp100d.dll丢失找不到问题解决
  • Page Assist终极指南:让本地AI模型成为你的网页浏览智能伴侣
  • Elvin 新手快速入门与实战指南
  • 播客推荐系统:语义ID与生成式检索技术解析
  • 2026滨州漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • 2026 GEO服务商选型指南:为什么“全意图”正在成为行业新标准? - GEO优化
  • 别墅天井景观落地方案:别墅天井仿真植物造景搭配与施工实操指南 - 三棵树园艺
  • 国产大模型GLM-5.2登顶编程设计双冠王
  • Transformer长上下文处理:RoPE与知识蒸馏优化实践
  • 别墅楼梯转角造景设计思路:别墅楼梯转角仿真绿植软装的标准化搭配方案 - 三棵树园艺
  • MC9S08AC60 BDC与DBG调试模块深度解析:从单线通信到非侵入式追踪
  • 2026年成都税务律师服务市场观察与优质机构推荐 - 品牌鉴赏官2026
  • 影刀RPA定时任务与调度:打造7x24小时无人值守的自动化工厂
  • 现在遇到一个问题-----mediaprojection会失效