news 2026/6/10 1:54:38

Java 匿名内部类:计算方法执行耗时

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 匿名内部类:计算方法执行耗时

一、前言
在日常 Java 开发中,我们经常需要统计一段代码、一个方法的运行耗时,用来分析代码性能。如果每次都手动写记录开始时间、结束时间、计算差值,代码会大量冗余。
本文利用 Java 接口 + 匿名内部类 封装通用耗时统计工具,一行代码即可完成任意代码块的计时,代码简洁、复用性强,同时理解匿名内部类的实际使用场景。
二、需求分析
编写通用工具类,能够统计任意代码块的执行时间;
使用匿名内部类实现任务传递,不额外创建独立类文件;
运行程序,直观输出代码执行耗时。
三、知识点铺垫
接口:定义统一任务规范,只声明执行方法;
匿名内部类:不用单独定义类,直接对接口进行实例化并实现方法,适合临时使用的场景;
系统时间 API:System.currentTimeMillis() 获取当前系统毫秒时间,用于计算时间差。
四、完整代码实现

  1. 全部代码(单文件,直接运行)
    java
    运行
    // 定义任务接口:规范所有待执行的任务
    interface Task {
    void execute();
    }

/**

  • 代码耗时统计工具类
    */
    public class TimeCount {

    /**

    • 通用计时方法
    • @param task 待执行的任务
    • @return 执行耗时(毫秒)
      */
      public static long getRunTime(Task task) {
      // 记录任务开始时间
      long start = System.currentTimeMillis();
      // 执行目标代码
      task.execute();
      // 记录任务结束时间
      long end = System.currentTimeMillis();
      // 返回总耗时
      return end - start;
      }

    public static void main(String[] args) {
    // 使用匿名内部类实现接口,传入待测试代码
    long time = getRunTime(new Task() {
    @Override
    public void execute() {
    // 此处为需要统计耗时的业务代码
    try {
    // 模拟耗时操作:休眠1秒
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    });

    // 输出最终耗时 System.out.println("代码执行总耗时:" + time + " 毫秒");

    }
    }

  1. 运行方式
    将代码保存为 TimeCount.java;
    打开命令行 / IDE,执行编译运行:
    plaintext
    javac TimeCount.java
    java TimeCount
  2. 运行结果
    plaintext
    代码执行总耗时:1000 毫秒
    五、代码解析
    自定义 Task 接口
    只定义一个 execute() 抽象方法,代表需要被执行的任务,所有要计时的代码都放到这个方法中。
    通用计时方法 getRunTime
    执行任务前记录时间戳;
    调用 execute() 运行目标代码;
    执行完成后再次记录时间,计算时间差并返回。
    该方法可复用,支持统计任意代码块。
    匿名内部类核心用法
    java
    运行
    new Task() {
    @Override
    public void execute() {
    // 自定义业务代码
    }
    }
    没有创建新的 Java 类,直接在方法参数中实例化接口并实现抽象方法,这就是匿名内部类。优点:随用随写,简洁高效。
    六、拓展使用
    如需统计其他代码耗时,只需修改匿名内部类里的代码即可,工具方法无需改动:
    java
    运行
    // 示例:统计循环运算耗时
    long loopTime = getRunTime(new Task() {
    @Override
    public void execute() {
    for (int i = 0; i < 1000000; i++) {
    Math.sqrt(i);
    }
    }
    });
    System.out.println(“循环运算耗时:” + loopTime + " 毫秒");
    七、学习总结
    匿名内部类常配合接口 / 抽象类使用,简化临时类的编写;
    封装通用工具方法,能大量减少重复代码,提升代码维护性;
    利用系统时间戳可以轻松实现代码性能监控,是开发中常用的性能调优小技巧。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 1:50:37

工业互联网组网必学:静态路由稳如磐石

聊聊静态路由&#xff1a;工业互联网组网入门&#xff0c;原来稳才是王道 最近这段时间&#xff0c;我们大一工业互联网组建与维护专业&#xff0c;一直在啃路由交换这块内容。从最基础的 IP 地址划分、交换机配置&#xff0c;一步步摸到了路由器&#xff0c;而最先接触、也让我…

作者头像 李华
网站建设 2026/6/10 1:49:38

BiliTools:5分钟掌握B站视频下载与AI智能总结的终极指南

BiliTools&#xff1a;5分钟掌握B站视频下载与AI智能总结的终极指南 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

作者头像 李华
网站建设 2026/6/10 1:49:28

统信系统重置密码

目录 使用LiveCD重置Linux系统密码 官方网址&#xff1a;衍星软件工作室 - LiveCD 运维工具 准备工作 下载Linux LiveCD镜像&#xff08;如Ubuntu、Fedora等&#xff09;并制作启动U盘确保目标计算机支持从USB设备启动官方网址&#xff1a;衍星软件工作室 - LiveCD 运维工具 …

作者头像 李华