下面使用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()方法就可以实现回调功能

本文转自:http://kidult.iteye.com/blog/148982

最新文章

  1. SpringAOP之动态代理
  2. iOS Swift-元组tuples(The Swift Programming Language)
  3. SQL 2014新特性- Delayed durability
  4. 解决Android Studio 和 Android SDK Manager 无法在线更新的问题.
  5. 查看别人的css
  6. SqlSever基础 dateadd year,增加五年
  7. lua 中pairs 和 ipairs区别
  8. jquery上传插件uploadify 报错http error 302 解决方法之一
  9. Android开发手记(7) 按钮类控件的使用
  10. ACCESS 里面的坑
  11. mysql修改用户名和密码
  12. google protocol buffer的原理和使用(四)
  13. dede内容页调用图片集下所有图片方法!
  14. vue2.0路由进阶
  15. Docker Dockerfile
  16. [源码分析]ReentrantLock &amp; AbstractQueuedSynchronizer &amp; Condition
  17. Python001-操作MSSQL(Microsoft sql server)基础示例(一)
  18. HDU/HDOJ 1867 A + B for you again
  19. echart中间显示固定的字
  20. 原码,反码,补码,及Java中数字表示方法

热门文章

  1. Headfirst设计模式的C++实现——状态模式(State)
  2. linq递归
  3. mysql与Navicat for MySQL的衔接配置问题【原创】
  4. Apose 套打
  5. 青瓷qici - H5小游戏 抽奖机 “one-arm bandit”
  6. 解决使用 Composer 的时候提示输入 Token
  7. 工作流(Workflow)学习---基础知识整理
  8. 基于android混合开发的JsBridge技术学习
  9. BZOJ 1729: [Usaco2005 dec]Cow Patterns 牛的模式匹配
  10. csuoj 1353: Guessing the Number