有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录操作的java类,当然还有一些其他控制
Maven配置
pom.xml:
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.6</version>
- </dependency>
(1)
- private static void test01() throws InterruptedException {
- StopWatch watch = new StopWatch();
- watch.start();
- Thread.sleep(1000);
- watch.split();
- /*
- * This is the time between start and latest split.
- * 调用start()方法到最后一次调用split()方法耗用的时间
- */
- System.out.println(watch.getSplitTime());
- Thread.sleep(2000);
- watch.split();
- System.out.println(watch.getSplitTime());
- Thread.sleep(500);
- watch.stop();
- /*
- * This is either the time between the start and the moment this method
- * is called, or the amount of time between start and stop
- * 调用start()方法到调用getTime()或stop()方法耗用的时间
- */
- System.out.println(watch.getTime());
- }
打印信息:
- 1000
- 3000
- 3500
(2)
- private static void test02() throws InterruptedException {
- StopWatch watch = new StopWatch();
- watch.start();
- Thread.sleep(1000);
- System.out.println(watch.getTime());
- /* 复位 归零 */
- watch.reset();
- watch.start();
- Thread.sleep(1000);
- System.out.println(watch.getTime());
- }
- 1000
- 1000
- private static void test03() throws InterruptedException {
- StopWatch watch = new StopWatch();
- watch.start();
- Thread.sleep(1000);
- System.out.println(watch.getTime());
- /* 暂停 */
- watch.suspend();
- System.out.println("do something");
- Thread.sleep(500);
- /* 恢复 */
- watch.resume();
- Thread.sleep(2000);
- System.out.println(watch.getTime());
- }
- 1000
- do something
- 3000