java 线程 回调函数_java 回调函数实现方式
回調函數定義:
傳遞一個函數A到另一個函數B中,并且這個函數B執行函數A。我們就說函數A叫做回調函數。如果沒有名稱,就叫做匿名回調函數.
或者將一個方法對象a 傳遞給另一個方法對象 b,讓后者在適當的時候執行 a,那么a就叫做回調函數。
也就是說,只要傳遞的參數不是基本類型,而是函數的指針(引用)即為回調。
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()方法,就只有"//測試方法"是需要改變的,下面我們來做一個函數實現相同功能但更靈活:
首先定一個回調接口:
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 回调函数实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最长非单调增序列(最长非单调增序列,,要
- 下一篇: string.Empty 和 并不总是