StopWatch介绍
StopWatch类是Spring框架中用于测量代码执行时间的工具类,它提供了一系列属性来记录监测信息。
本文基于spring-boot-starter-web:2.2.2RELEASE版本。
源码:文章来源:https://www.toymoban.com/news/detail-504817.html
public class StopWatch {
private final String id;
private boolean keepTaskList = true;
private final List<StopWatch.TaskInfo> taskList = new LinkedList<>();
private long startTimeMillis;
@Nullable
private String currentTaskName;
@Nullable
private StopWatch.TaskInfo lastTaskInfo;
private int taskCount;
private long totalTimeMillis;
......方法略
public static final class TaskInfo {
private final String taskName;
private final long timeNanos;
}
}
StopWatch属性详解
属性 | 描述 |
---|---|
id | 表示该StopWatch对象的唯一标识符,可以通过构造函数传入。 |
keepTaskList | 表示是否保留所有记录的监测任务,,默认为true。 如果该值为true,则程序可以通过getTaskInfo()方法获取所有监测任务的详细信息,否则仅可以获取最后一次监测任务的详细信息。 |
taskList | 用于记录所有的监测任务信息,只有keepTaskList属性值为true时才记录任务信息,该值在stop()方法调用时添加一条任务信息。 |
currentTaskName | 表示当前正在执行的监测任务名称,该值在start()方法调用时设置。 |
lastTaskInfo | 表示最后一次执行的监测任务的详细信息,包括任务名称、执行时间等,该值在stop()方法调用时设置。 |
taskCount | 表示执行的监测任务数目,该值在stop()方法调用时值+1。 |
totalTimeMillis | 表示该StopWatch对象记录的所有监测任务的总执行时间,单位为毫秒,该值在stop()方法调用时值+当前任务的执行时间。 |
TaskInfo.taskName | 任务名称。 |
TaskInfo.timeNanos | 任务执行时间。 |
StopWatch方法详解
方法 | 描述 |
---|---|
void setKeepTaskList(boolean keepTaskList) | 设置是否保留所有记录的监测任务,默认为true。 如果该值为true,则程序可以通过getTaskInfo()方法获取所有监测任务的详细信息。 |
void start() | 开始一个新的监测任务,可设置任务名称。记录当前时间和任务名称。 |
void stop() | 结束当前监测任务。记录任务执行时间,更新总执行时间和任务数量。 |
String getId() | 获取唯一标识符。 |
String currentTaskName() | 获取当前正在运行的监测任务名称。 |
TaskInfo getLastTaskInfo() | 获取最后一次执行的监测任务的详细信息,包括任务名称、开始时间、结束时间和执行时间等。 |
String getLastTaskName() | 获取最后一次执行的监测任务的任务名称 |
long getLastTaskTimeMillis() | 获取最后一次执行的监测任务的执行时间,单位毫秒 |
long getLastTaskTimeNanos() | 获取最后一次执行的监测任务的执行时间,单位纳秒 |
int getTaskCount() | 获取已执行的监测任务数目 |
TaskInfo[] getTaskInfo() | 获取所有监测任务信息,仅在keepTaskList属性为true时有效。 |
double getTotalTimeSeconds() | 获取所有监测任务的总执行时间,单位为秒。 |
long getTotalTimeMillis() | 获取所有监测任务的总执行时间,单位为毫秒。 |
long getTotalTimeNanos() | 获取所有监测任务的总执行时间,单位为纳秒。 |
boolean isRunning() | 判断当前StopWatch对象是否正在执行监测任务。 |
String shortSummary() | 以字符串形式输出所有监测任务的简要信息,包括任务数目和总执行时间。 |
String prettyPrint() | 以字符串形式输出所有监测任务的执行时间和详细信息。 |
StopWatch使用示例
public static void main(String[] args) throws InterruptedException {
StopWatch stopWatch = new StopWatch();
stopWatch.start("task1");
System.out.println("当前任务名称:"+stopWatch.currentTaskName());
Thread.sleep(1000);
stopWatch.stop();
System.out.println("task1耗时毫秒:"+stopWatch.getLastTaskTimeMillis());
stopWatch.start("task2");
System.out.println("当前任务名称:"+stopWatch.currentTaskName());
Thread.sleep(2000);
stopWatch.stop();
System.out.println("task2耗时毫秒:"+stopWatch.getLastTaskTimeMillis());
System.out.println("总任务数:"+stopWatch.getTaskCount());
System.out.println("总耗时毫秒:"+stopWatch.getTotalTimeMillis());
System.out.println("所有任务简要信息:\n"+stopWatch.shortSummary());
System.out.println("所有任务详细信息:\n"+stopWatch.prettyPrint());
}
输出:文章来源地址https://www.toymoban.com/news/detail-504817.html
当前任务名称:task1
task1耗时毫秒:1013
当前任务名称:task2
task2耗时毫秒:2014
总任务数:2
总耗时毫秒:3027
所有任务简要信息:
StopWatch '': running time = 3027555400 ns
所有任务详细信息:
StopWatch '': running time = 3027555400 ns
---------------------------------------------
ns % Task name
---------------------------------------------
1013462900 033% task1
2014092500 067% task2
到了这里,关于Spring计时器StopWatch的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!