自定义接口
(1)定义接口
public interface CallBack {
void fun();
}
(2)定义工具类
public class ExecuteTime {
public static long exec(CallBack callBack) {
long start = System.currentTimeMillis();
callBack.fun();
long end = System.currentTimeMillis();
return end - start;
}
}
(3)测试类
public class Demo3 {
public static void main(String[] args) {
/**
* 测试类调用ExecuteTime工具类下的exec方法 ,
* 给她传递参数CallBack类型的一串代码--->接口中的方法通过匿名内部类抽象实现
* 该代码在exec方法中通过fun()----->接口定义 实现
*/
long res = ExecuteTime.exec(new CallBack() {
@Override
public void fun() {
for(int i = 0; i<9999999; i++){
i = i+5;
}
}
});
System.out.println(res);
}
}
结果
使用系统接口
一、使用Runnable接口
public class ExecuteTime1 {
public static long exec(Runnable callBack){
long start = System.currentTimeMillis();
callBack.run();
long end = System.currentTimeMillis();
return end - start;
}
}
测试
public class Demo3_1 {
public static void main(String[] args) {
long res1 = ExecuteTime1.exec(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
结果:
二、使用Supplier接口
需要注意的是Supplier类的get方法有返回值
public class ExecuteTime2 {
public static long exc(Supplier callback){
long start = System.currentTimeMillis();
Object o = callback.get();
System.out.println(o);
long end = System.currentTimeMillis();
return end - start;
}
}
测试
public class Demo3_2 {
public static void main(String[] args) {
long res1 = ExecuteTime2.exc(new Supplier() {
@Override
public Object get() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "hhhhhha";
}
});
System.out.println(res1);
}
}
结果