当前位置: 首页 > 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.gsyq.cn/news/1557570.html

相关文章:

  • Apple Silicon架构革新:Whisky如何实现原生级Windows程序兼容方案
  • jExifToolGUI:轻松管理照片元数据的实用指南
  • QtScrcpy终极指南:5分钟实现电脑键鼠控制安卓手机
  • 解锁Obsidian美化潜能:20个CSS片段与主题资源一站式获取指南
  • 北京企业AI搜索生存指南:全意图GEO如何帮你“被AI看见”? - GEO优化
  • Transformer长上下文处理:RoPE与知识蒸馏优化实践
  • 播客推荐系统:语义ID与生成式检索技术解析
  • 现在遇到一个问题-----mediaprojection会失效
  • Python基本训练
  • 2026年成都税务律师服务市场观察与优质机构推荐 - 品牌鉴赏官2026
  • 别墅楼梯转角造景设计思路:别墅楼梯转角仿真绿植软装的标准化搭配方案 - 三棵树园艺
  • 2026深圳瓷砖空鼓维修正规机构测评|无创免拆砖修复工艺,全域上门+标准化质保 - 宅安选房屋修缮
  • 2026滁州本地人必选防水补漏检测维修公司靠谱服务商TOP5推荐:房屋渗漏水检测维修/卫生间/厨房/天花板/阳台/外墙渗漏水检测补漏维修-暗管漏水检测专业仪器精准定位漏水点 - 即刻修防水
  • 2026秦皇岛2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水
  • 从芯片到整机:HBM、CDM与IEC61000-4-2模型在ESD防护中的角色定位与实战选择
  • 2026年新发布:宁夏道路标志杆定制厂家综合考察与推荐 - 品牌鉴赏官2026
  • 温柔
  • 2026滁州漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • 第五周总结
  • 2026黄岛区专业的空调维修服务商推荐 - 品牌排行榜
  • 分布式系统实战:Elasticsearch搜索与RabbitMQ消息队列核心原理剖析
  • 电瓶车跨省托运2026新规 带电池整车发车260元起 - 快递物流资讯
  • 如何永久保存微信聊天记录:5分钟掌握数据留痕终极方案
  • 简单理解:霍尔传感器 VS 编码器
  • 2026湛江漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • 深入解析MCU时钟与复位系统:PLL、看门狗与低功耗模式实战
  • 性能测试脚本编写实战:从录制回放到精准压测的进阶指南
  • Taurus性能测试平台:超越JMeter的自动化编排与CI/CD集成实践
  • 终极流媒体解析指南:猫抓cat-catch如何轻松突破MPD/DASH格式壁垒
  • P值、置信度与统计决策:如何避免显著性检验的常见陷阱