0
点赞
收藏
分享

微信扫一扫

命令设计模式 #yyds干货盘点#

命令设计模式

示例:求指定代码的执行时间

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);
    }
}
举报

相关推荐

0 条评论