`
kidult
  • 浏览: 48143 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

[实战]java回调函数

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


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

java 代码
 
  1. public   class  TestObject {  
  2.     /**  
  3.      * 一个用来被测试的方法,进行了一个比较耗时的循环  
  4.      */   
  5.     public   static   void  testMethod(){  
  6.         for ( int  i= 0 ; i< 100000000 ; i++){  
  7.               
  8.         }  
  9.     }  
  10.     /**  
  11.      * 一个简单的测试方法执行时间的方法  
  12.      */   
  13.     public   void  testTime(){  
  14.         long  begin = System.currentTimeMillis(); //测试起始时间   
  15.         testMethod(); //测试方法   
  16.         long  end = System.currentTimeMillis(); //测试结束时间   
  17.         System.out.println("[use time]:"  + (end - begin)); //打印使用时间   
  18.     }  
  19.       
  20.     public   static   void  main(String[] args) {  
  21.         TestObject test=new  TestObject();  
  22.         test.testTime();  
  23.     }  
  24. }  


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

首先定一个回调接口:

java 代码
 
  1. public   interface  CallBack {  
  2.     //执行回调操作的方法   
  3.     void  execute();  
  4. }  


然后再写一个工具类:

java 代码
 
  1. public   class  Tools {  
  2.       
  3.     /**  
  4.      * 测试函数使用时间,通过定义CallBack接口的execute方法  
  5.      * @param callBack  
  6.      */   
  7.     public   void  testTime(CallBack callBack) {  
  8.         long  begin = System.currentTimeMillis(); //测试起始时间   
  9.         callBack.execute(); ///进行回调操作   
  10.         long  end = System.currentTimeMillis(); //测试结束时间   
  11.         System.out.println("[use time]:"  + (end - begin)); //打印使用时间   
  12.     }  
  13.       
  14.     public   static   void  main(String[] args) {  
  15.         Tools tool = new  Tools();  
  16.         tool.testTime(new  CallBack(){  
  17.             //定义execute方法   
  18.             public   void  execute(){  
  19.                 //这里可以加放一个或多个要测试运行时间的方法   
  20.                 TestObject.testMethod();  
  21.             }  
  22.         });  
  23.     }  
  24.       
  25. }  


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

分享到:
评论
10 楼 shaoyong 2013-09-29  
佩服楼主
9 楼 lucifer833 2013-01-24  
这不是回调吧??
8 楼 michael_wong 2011-04-03  
7 楼 wangruiming 2010-11-18  
例子很经典,作者对回调理解一定很深
6 楼 agao1985 2010-01-18  
恩 终于看明白一点了 不过用代理也能实现啊
5 楼 accphc 2009-05-14  
一个很不错的回调例子!!
4 楼 samm 2008-12-12  
SO good!
3 楼 wengax 2008-11-23  
给予高度的评价!!!!!!
2 楼 keating 2008-11-06  
写得太棒了。转载一下。谢谢!
1 楼 yuechiang 2008-10-20  
very good! up

相关推荐

    Java-Java函数式编程教程

    Lambda表达式可以简化回调函数的实现,使代码更易读。 2. **函数式接口**: 为了使用Lambda表达式,必须有一个合适的函数式接口。函数式接口是指只有一个抽象方法的接口,如Runnable、Callable和Comparator。Java ...

    Java 8实战1

    这大大简化了多线程编程中的回调函数和事件处理,以及对集合的处理。 2. **流(Streams)API**:流API是Java 8中的另一大亮点,它提供了一种处理集合数据的新方法,可以对大量数据进行高效、声明式的处理。流API...

    java 中OkHttp的使用方法及实例

    异步请求时,通过回调函数处理响应,确保在合适的线程中执行后续操作。OkHttp还支持POST、PUT、DELETE等其他HTTP方法,只需在构建`Request`时设置相应的方法即可。同时,还可以设置请求头、超时时间、重试策略等高级...

    Java并发编程实战

    12.1.5 使用回调213 12.1.6 产生更多的交替操作214 12.2 性能测试215 12.2.1 在PutTakeTest中增加计时功能215 12.2.2 多种算法的比较217 12.2.3 响应性衡量218 12.3 避免性能测试的陷阱220 12.3.1 垃圾回收...

    淘宝开放平台JAVA版SDK top4java

    5. **异步调用与回调**:对于一些耗时的操作,如批量操作,SDK可能支持异步调用,开发者可以设置回调函数,当操作完成后,系统会自动调用回调函数,通知开发者结果。 6. **多线程支持**:在处理大量并发请求时,...

    Java经典学习实例:100个源码.rar

    这些实例可能会展示如何使用函数接口和lambda表达式来实现回调函数或简化代码。 4. **网络编程**:Java的`java.net`包提供了实现网络通信的功能,如Socket编程、ServerSocket、URL连接等。实例可能涵盖客户端和...

    Java使用RabbitMQ完整项目源码.rar

    通过`Channel#basicConsume`方法,我们可以设定一个队列名,当队列中有消息时,RabbitMQ会调用预设的回调函数,将消息传递给消费者。在回调函数中,我们可以对消息进行解码和业务逻辑处理。 发送监听和返回监听是...

    使用Java创建数据备份工具 - 一个实战教程

    在定时任务的回调函数中,我们可以调用之前实现的本地备份或云备份功能。 4. 用户界面设计 使用Swing库,我们可以方便地创建各种界面元素,如文本框、按钮、复选框等。在上述代码片段中,我们创建了`...

    Java经典实例(第2版) pdf和源代码

    17. **Lambda表达式和函数式编程**:Java 8引入的新特性,简化了回调函数和多线程编程。 18. **并发工具类**:如CountDownLatch、CyclicBarrier、Semaphore等,提高并发编程的效率和安全性。 19. **垃圾回收和内存...

    阿里云IOT在java实现的Demo

    在Java代码中,设置订阅主题并注册回调函数来处理接收到的指令。 5. **设备状态管理**: - Java SDK提供了设备上线、离线状态的通知接口。你可以注册状态变化的回调,以便在设备连接状态改变时执行相应的操作。 -...

    4本高清中文版Java性能优化经典书籍

    Lambda表达式使得代码更加简洁,同时提高了函数式编程的能力,降低了回调函数的复杂性。Stream API则为数据处理提供了新途径,特别是大数据集的处理,能够利用多核处理器进行并行计算,显著提升性能。 2. **《Java...

    java小程序集锦

    这些小程序可能使用Lambda简化了回调函数或处理集合的操作。 13. **枚举与注解**:枚举类型是Java中一种特殊的类,常用于定义固定的值。注解可以为代码添加元信息,用于编译时或运行时的处理。 通过研究“Java小...

    一站式学习Java网络编程 全面理解BIO:NIO:AIO1

    AIO(Asynchronous I/O)是一种异步非阻塞式 I/O 模式,服务器使用回调函数来处理客户端请求,提高了服务器的性能和可扩展性。 二、网络层的解析与协议 网络层是 OSI 七层模型中的第三层,负责路由选择和路径选择...

    java 飞舞的气球

    通过在定时器的回调函数中更新气球坐标,可以实现平滑的动画效果。 5. **坐标系统和运动逻辑**: 在Java中,坐标系统通常左上角为原点,X轴向右,Y轴向下。编写逻辑来计算气球的新位置,考虑重力、风力等因素,可以...

    Java rabbitMQ源码

    接收消息通常是通过`channel.basicConsume()`启动一个消费循环,每个接收到的消息都会触发一个回调函数进行处理。 6. **工作模式**:RabbitMQ支持多种工作模式,如发布/订阅、直接、主题、头部和扇出等。在Java代码...

    Java Script精彩实例教程

    Promise用于异步编程,解决了回调地狱的问题,而async/await则提供了更直观的异步控制流。 在实际开发中,JavaScript常与HTML和CSS结合,构建前端应用。框架和库如React、Vue、Angular等极大提高了开发效率,它们...

    java精典编程100例 27

    希望本文对您学习Java回调机制有所帮助,同时也期待“Java经典编程100例”的后续精彩内容。 通过本文的学习,相信读者已经掌握了回调的基本概念和实现方法,并能够将其应用于实际项目中。在未来的学习和工作中,...

    Java Script 经典教程(三)——java script 专业设计

    箭头函数的语法简洁,其this指向与父级作用域保持一致,解决了回调函数中this指向的问题。此外,我们还需要理解闭包的概念,它是JavaScript实现数据封装和模块化的一种方式。 在JavaScript中,对象是核心概念。通过...

Global site tag (gtag.js) - Google Analytics