`
icarusliu
  • 浏览: 235365 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[实战]java回调函数

    博客分类:
  • java
阅读更多
(http://kidult.iteye.com/blog/148982)
下面使用java回调函数来实现一个测试函数运行时间的工具类:


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

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()方法,就只有"//测试方法"是需要改变的,下面我们来做一个函数实现相同功能但更灵活:

首先定一个回调接口:

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


然后再写一个工具类:

java 代码
 

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函数式编程教程

    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.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    10.8.2 使用专门的监听器实现回调 448 10.8.3 为全部实体配置默认监听器 450 10.8.4 排除监听器 452 10.9 本章小结 455 第11章 JPA的查询支持 456 11.1 查询API 457 11.1.1 面向对象的JPQL 457 11.1.2 查询API简介 ...

    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 飞舞的气球

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

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

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

    Java rabbitMQ源码

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

    Java Script精彩实例教程

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

    java精典编程100例 27

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

Global site tag (gtag.js) - Google Analytics