下面使用java回调函数来实现一个测试函数运行时间的工具类:

如果我们要测试一个类的方法的执行时间,通常我们会这样做:

public class TestObject {

/**

* 一个用来被测试的方法,进行了一个比较耗时的循环

*/

public static void testMethod(){

for ( int i= 0 ; i< 100000000 ; i++){

}

}

/**

* 一个简单的测试方法执行时间的方法

*/

public void testTime(){

long begin = System.currentTimeMillis(); //测试起始时间

testMethod(); //测试方法

long end = System.currentTimeMillis(); //测试结束时间

System.out.println("[use time]:" + (end - begin)); //打印使用时间

}

public static void main(String[] args) {

TestObject test=new TestObject();

test.testTime();

}

}

大家看到了testTime()方法,就只有"//测试方法"是需要改变的,下面我们来做一个函数实现相同功能但更灵活:

首先定一个回调接口:

public interface CallBack {

//执行回调操作的方法

void execute();

}

然后再写一个工具类:

public class Tools {

/**

* 测试函数使用时间,通过定义CallBack接口的execute方法

* @param callBack

*/

public void testTime(CallBack callBack) {

long begin = System.currentTimeMillis(); //测试起始时间

callBack.execute(); ///进行回调操作

long end = System.currentTimeMillis(); //测试结束时间

System.out.println("[use time]:" + (end - begin)); //打印使用时间

}

public static void main(String[] args) {

Tools tool = new Tools();

tool.testTime(new CallBack(){

//定义execute方法

public void execute(){

//这里可以加放一个或多个要测试运行时间的方法

TestObject.testMethod();

}

});

}

}

大家看到,testTime()传入定义callback接口的execute()方法就可以实现回调功能

java 类确定运行时间_java回调函数实例:实现一个测试函数运行时间的工具类相关推荐

  1. spring 使用其他类protected方法_Java操作bean、属性、方法的使用工具类

    在实际的项目开发中,反射操作类的实例.属性赋值.执行方法是常规的操作,虽然spring提供了比较完整的API来执行上述操作,不过在实际的应用中,spring的函数隐藏比较深,比较分散,小伙伴们可能懒得 ...

  2. 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...

    编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...

  3. opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类

    opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...

  4. python调用公共方法_common: 这是一个Python的公共工具类,集成了各种主要的python常用方法...

    common 介绍 这是一个Python的公共工具类,集成了各种主要的python常用方法. 本人是做java开发的,学习python很多情况下是把他当做一个脚本来使用,在使用的过程中,发现很多的功能 ...

  5. 封装一个常用的js工具类

    /*** @author:水痕* @timer:2016-07-28* @email:332904234@qq.com* @version:1.0* @title:封装一个自己常用的工具类js* @n ...

  6. 一个显示日期的工具类

    一个显示日期的工具类 .h文件 #import <Foundation/Foundation.h>@interface TimeUtil : NSObject+ (NSString*)ge ...

  7. wsm-lucene 一个简单的Lucene工具类

    代码地址: https://gitee.com/shaojiepeng/wsm-lucene wsm-lucene 一个简单的Lucene工具类,通过注释的方式来配置构建索引的字段.提供新建索引.查找 ...

  8. java 数字翻译成英文_Java实现将数字日期翻译成英文单词的工具类实例

    本文实例讲述了Java实现将数字日期翻译成英文单词的工具类.分享给大家供大家参考,具体如下: package com.sunyard.etp.ag.util; import java.math.Big ...

  9. java中参数存储_Java中函数参数传递和数据存储

    值传递是将要传递的值作为一副本传递的.. 引用传递,传递的是引用对象的内存地址.. 例如: int i=4; int j=i;   //相当于把4复制了一个副本赋给了j 输出结果是i=4 ,j=4 C ...

最新文章

  1. tf.keras.losses.MeanAbsoluteError 损失函数 示例
  2. anaconda tensorflow 2.3_安装anaconda amp;源码安装lightgbm,xgboost
  3. Struts2的核心文件
  4. 2008--2009年北京航空航天大学计算机研究生机试真题
  5. java mvc模式_Java MVC模式
  6. 删除Windows Service
  7. React开发(175):注意在回调里面重新渲染列表
  8. Linux Shell高级技巧(三)
  9. 超全机器学习工程师成长路线图,GitHub已收获6400+Star!
  10. 集成CAS单点登录 决策系统的配置以及注意事项
  11. cocos2d-x游戏引擎核心(3.x)----事件分发机制之事件从(android,ios,desktop)系统传到cocos2dx的过程浅析...
  12. Flex 与.net 进行通信可以通过Fluorine(fluorinefx),WebORB For .net,Socket
  13. 第四次黄鹤楼之老照片
  14. Java使用POI导出Excel
  15. 深入浅出的mysql第三版和第二版的区别_1.高性能MySQL(第3版) 2. 深入浅出MySQL 合集 完整版 高清...
  16. 软考高项之项目变更管理
  17. HDU3533Escape(BFS )
  18. 2020年下半年系统架构设计师下午真题及答案解析
  19. 我们需要“梦想比回忆多”的精神
  20. android dd命令,【测试人员技能】Android shell 下dd命令浅析

热门文章

  1. linux用户、用户组 增删改查专栏
  2. Spring项目启动加载xml配置文件替换数据库提高响应速度
  3. GitHub下载文件时缓慢的问题
  4. Vue封装hbuilder热更新
  5. 输入文字自动生成图片_原来Word还可以自动生成图片和图表目录!
  6. oracle导入dmp清除之前,oracle导入dmp遇到的有关问题
  7. mysql event 变量_mysql 中event的用法
  8. C语言 while 循环 - C语言零基础入门教程
  9. Python 列表List - Python零基础入门教程
  10. android判断usb已连接,android 判断是否有网络连接(usb连接电脑问题)