StopWatch是不在java标准包中的,你可以在以下两个程序包中找到StopWatch工具类
- org.apache.commons.lang3.time
- Apache Commons Lang提供了一些Java标准库中没有提供的类与方法,尤其是在String操作方法,基础数值方法,对象引用,并发行,创建及序列化,系统属性等方面提供了强大的功能
- org.springframework.util
- spring框架为现代java企业级应用提供了一个简洁并且富有表达能力的可以运行在任何部署平台的编程与设置模型
1.org.apache.commons.lang3.time的用法
package com.demo;
import org.apache.commons.lang3.time.StopWatch;
import java.util.concurrent.TimeUnit;
public class WatchDogTest {
public static void main(String []argv) throws InterruptedException {
StopWatch watch = StopWatch.createStarted(); //创建后立即start,常用
//StopWatch watch = new StopWatch();
//watch.start();
Thread.sleep(1000);
System.out.println("统计从开始到现在运行时间:" + watch.getTime() + "ms"); //1000ms
Thread.sleep(1000);
watch.split();
System.out.println("从start到此刻为止的时间:" + watch.getTime());
System.out.println("从开始到第一个切入点运行时间:" + watch.getSplitTime()); //2245
Thread.sleep(1000);
watch.split();
System.out.println("从开始到第二个切入点运行时间:" + watch.getSplitTime());
watch.reset(); //重置后必须使用start方法
watch.start();
Thread.sleep(1000);
System.out.println("重新开始后到当前运行时间是:" + watch.getTime()); //1000
watch.suspend(); //暂停
Thread.sleep(6000); //模拟暂停6秒钟
watch.resume(); //上面suspend,这里要想重新统计,需要恢复一下
System.out.println("恢复后执行的时间是:" + watch.getTime()); //1000 注意此时这个值还是1000
watch.stop();
System.out.println("花费的时间》》" + watch.getTime() + "ms"); //1002ms
System.out.println("花费的时间》》" + watch.getTime(TimeUnit.SECONDS) + "s"); //1s 可以直接转成s
}
}
2.org.springframework.util的用法
import org.springframework.util.StopWatch;
import java.util.UUID;
public class WatchDogTest {
public static void main(String []argv) throws InterruptedException {
StopWatch sw = new StopWatch(UUID.randomUUID().toString());
sw.start("起床");
Thread.sleep(1000);
System.out.println("当前任务名称:" + 1);
sw.stop();
sw.start("洗漱");
Thread.sleep(2000);
System.out.println("当前任务名称:" + 2);
sw.stop();
sw.start("锁门");
Thread.sleep(500);
System.out.println("当前任务名称:" + 3);
sw.stop();
System.out.println(sw.prettyPrint()); // 这个方法打印在我们记录日志时是非常友好的 还有百分比的分析哦
System.out.println("this is:"+sw.shortSummary());
// 任务总的耗时 如果你想获取到每个任务详情(包括它的任务名、耗时等等)可使用
System.out.println("所有任务总耗时:" + sw.getTotalTimeMillis());
System.out.println("任务总数:" + sw.getTaskCount());
System.out.println("所有任务详情:" + sw.getTaskInfo()); // 拿到所有的任务
}
}