(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()方法就可以实现回调功能
分享到:
相关推荐
Lambda表达式可以简化回调函数的实现,使代码更易读。 2. **函数式接口**: 为了使用Lambda表达式,必须有一个合适的函数式接口。函数式接口是指只有一个抽象方法的接口,如Runnable、Callable和Comparator。Java ...
这大大简化了多线程编程中的回调函数和事件处理,以及对集合的处理。 2. **流(Streams)API**:流API是Java 8中的另一大亮点,它提供了一种处理集合数据的新方法,可以对大量数据进行高效、声明式的处理。流API...
异步请求时,通过回调函数处理响应,确保在合适的线程中执行后续操作。OkHttp还支持POST、PUT、DELETE等其他HTTP方法,只需在构建`Request`时设置相应的方法即可。同时,还可以设置请求头、超时时间、重试策略等高级...
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 垃圾回收...
5. **异步调用与回调**:对于一些耗时的操作,如批量操作,SDK可能支持异步调用,开发者可以设置回调函数,当操作完成后,系统会自动调用回调函数,通知开发者结果。 6. **多线程支持**:在处理大量并发请求时,...
这些实例可能会展示如何使用函数接口和lambda表达式来实现回调函数或简化代码。 4. **网络编程**:Java的`java.net`包提供了实现网络通信的功能,如Socket编程、ServerSocket、URL连接等。实例可能涵盖客户端和...
通过`Channel#basicConsume`方法,我们可以设定一个队列名,当队列中有消息时,RabbitMQ会调用预设的回调函数,将消息传递给消费者。在回调函数中,我们可以对消息进行解码和业务逻辑处理。 发送监听和返回监听是...
在定时任务的回调函数中,我们可以调用之前实现的本地备份或云备份功能。 4. 用户界面设计 使用Swing库,我们可以方便地创建各种界面元素,如文本框、按钮、复选框等。在上述代码片段中,我们创建了`...
17. **Lambda表达式和函数式编程**:Java 8引入的新特性,简化了回调函数和多线程编程。 18. **并发工具类**:如CountDownLatch、CyclicBarrier、Semaphore等,提高并发编程的效率和安全性。 19. **垃圾回收和内存...
在Java代码中,设置订阅主题并注册回调函数来处理接收到的指令。 5. **设备状态管理**: - Java SDK提供了设备上线、离线状态的通知接口。你可以注册状态变化的回调,以便在设备连接状态改变时执行相应的操作。 -...
Lambda表达式使得代码更加简洁,同时提高了函数式编程的能力,降低了回调函数的复杂性。Stream API则为数据处理提供了新途径,特别是大数据集的处理,能够利用多核处理器进行并行计算,显著提升性能。 2. **《Java...
这些小程序可能使用Lambda简化了回调函数或处理集合的操作。 13. **枚举与注解**:枚举类型是Java中一种特殊的类,常用于定义固定的值。注解可以为代码添加元信息,用于编译时或运行时的处理。 通过研究“Java小...
AIO(Asynchronous I/O)是一种异步非阻塞式 I/O 模式,服务器使用回调函数来处理客户端请求,提高了服务器的性能和可扩展性。 二、网络层的解析与协议 网络层是 OSI 七层模型中的第三层,负责路由选择和路径选择...
通过在定时器的回调函数中更新气球坐标,可以实现平滑的动画效果。 5. **坐标系统和运动逻辑**: 在Java中,坐标系统通常左上角为原点,X轴向右,Y轴向下。编写逻辑来计算气球的新位置,考虑重力、风力等因素,可以...
接收消息通常是通过`channel.basicConsume()`启动一个消费循环,每个接收到的消息都会触发一个回调函数进行处理。 6. **工作模式**:RabbitMQ支持多种工作模式,如发布/订阅、直接、主题、头部和扇出等。在Java代码...
Promise用于异步编程,解决了回调地狱的问题,而async/await则提供了更直观的异步控制流。 在实际开发中,JavaScript常与HTML和CSS结合,构建前端应用。框架和库如React、Vue、Angular等极大提高了开发效率,它们...
希望本文对您学习Java回调机制有所帮助,同时也期待“Java经典编程100例”的后续精彩内容。 通过本文的学习,相信读者已经掌握了回调的基本概念和实现方法,并能够将其应用于实际项目中。在未来的学习和工作中,...
箭头函数的语法简洁,其this指向与父级作用域保持一致,解决了回调函数中this指向的问题。此外,我们还需要理解闭包的概念,它是JavaScript实现数据封装和模块化的一种方式。 在JavaScript中,对象是核心概念。通过...