仓库依赖
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
然后new一个stopwatch对象,调用start方法开启任务,stop暂停该任务,可以开启多个任务
start()开始计时,stop()停止当前任务的计时
public static void main(String[] args) throws InterruptedException{
StopWatch stopWatch = new StopWatch("任务耗时秒表工具");
stopWatch.start("task1");
Thread.sleep(1000);
stopWatch.stop();
System.out.println(stopWatch.getTotalTimeMillis());
stopWatch.start("task2");
Thread.sleep(3000);
stopWatch.stop();
//所有任务耗时时间
System.out.println(stopWatch.getTotalTimeMillis());
System.out.println(stopWatch.prettyPrint());
StopWatch stopWatch2 = new StopWatch("任务耗时秒表工具2");
stopWatch2.start("task3");
Thread.sleep(3000);
stopWatch2.stop();
//所有任务耗时时间
System.out.println(stopWatch2.getTotalTimeMillis());
System.out.println(stopWatch2.prettyPrint());
}
控制台输出如下:
总耗时,各个任务耗时时间、占比都能显示出来,能精准查明哪段代码块耗时过长,针对进行优化
注意事项:
1、StopWatch对象不是设计为线程安全的,并且不使用同步
2、一个StopWatch实例一次只能开启一个task,不能同时start多个task
3、在该task还没stop之前不能start一个新的task,必须在该task stop之后才能开启新的task
4、若要一次开启多个,需要new不同的StopWatch实例