命令设计模式
示例:求指定代码的执行时间
public static void main(String[] args) {
    long start = System.currentTimeMillis();
    for(int i=0;i<99999;i++) {
        System.out.println(i);
    }
    long end = System.currentTimeMillis();
    System.out.println("*** "+(end-start));
}示例:求任意一段代码的执行时间
- 工具类:
public abstract class ExecTime {
    public abstract void fun();
    public long exec() {
        long start = System.currentTimeMillis();
        fun();
        long end = System.currentTimeMillis();
        return end - start;
    }
}- 测试代码:
测试一:
public static void main(String[] args) {
        class ForExecTime extends ExecTime{//内部类
            @Override
            public void fun() {
                for(int i=0;i<99999;i++) {
                    System.out.println(i);
                }    
            }
        }
        ForExecTime obj = new ForExecTime();
        long res = obj.exec();
        System.out.println(res);
    }测试二:
public static void main(String[] args)  {
    ExecTime obj = new ExecTime() {//匿名内部类
        @Override
        public void fun() {
            for(int i=0;i<99999;i++) {
                System.out.println(i);
            }    
        }
    };
    long res = obj.exec();
    System.out.println(res);
}测试三:
public static void main(String[] args) {
    long res = new ExecTime() {
        @Override
        public void fun() {
            for(int i=0;i<99999;i++) {
                System.out.println(i);
            }    
        }
    }.exec();
    System.out.println(res);
}测试四:Lambda写法
public class DemoTest {
    public static long execTime(Supplier<Long> supplier) {
        return supplier.get();
    }
    public static void main(String[] args) {
        //Lambda表达式相当于匿名内部类的简写
        long res = execTime(() -> {
            long start = System.nanoTime();
            try {
                Thread.sleep(1500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            long end = System.nanoTime();
            return end - start;
        });
        System.out.println(res);
    }
}









