2.1、StopWatch 启动与停止(ok)
run 方法第第一步就是 创建一个StopWatch,然后启动
public ConfigurableApplicationContext run(String... args) {// 1、StopWatch stopWatch = new StopWatch();stopWatch.start();// 略 ...
}
1、new StopWatch()
/****** org.springframework.util.StopWatch ******/public StopWatch() {this("");
}
private final String id;// 唯一标识
public StopWatch(String id) {this.id = id;
}
简单不赘述
2、stopWatch.start()
开始计时
/****** org.springframework.util.StopWatch ******/public void start() throws IllegalStateException {start("");
}
private boolean running;// 是否正在运行
private String currentTaskName;// 当前任务名称
private long startTimeMillis;// 当前任务开始时间
public void start(String taskName) throws IllegalStateException {if (this.running) {throw new IllegalStateException("Can't start StopWatch: it's already running");}this.running = true;this.currentTaskName = taskName;this.startTimeMillis = System.currentTimeMillis();
}
简单不赘述
3、stopWatch.stop()
/****** org.springframework.util.StopWatch ******/private long totalTimeMillis;// 累计耗时
private boolean keepTaskList = true;
private final List<TaskInfo> taskList = new LinkedList<TaskInfo>();
private int taskCount; // 任务计数器
public void stop() throws IllegalStateException {if (!this.running) {throw new IllegalStateException("Can't stop StopWatch: it's not running");}long lastTime = System.currentTimeMillis() - this.startTimeMillis;this.totalTimeMillis += lastTime;this.lastTaskInfo = new TaskInfo(this.currentTaskName, lastTime);if (this.keepTaskList) {this.taskList.add(lastTaskInfo);}++this.taskCount;this.running = false;// 设置运行状态为停止this.currentTaskName = null;
}/****** org.springframework.util.StopWatch$TaskInfo ******/public static final class TaskInfo {private final String taskName;private final long timeMillis;TaskInfo(String taskName, long timeMillis) {this.taskName = taskName;this.timeMillis = timeMillis;}
}
简单不赘述
整个代码很简单,StopWatch就是一个码表,可以反复启动停止。
停止时会将记录运行时间,然后创建一个任务(TaskInfo)放入码表的List属性中。
Q&A
Q1、run 方法中这个 StopWatch 的作用是什么?
我们看到第 13 步 ,用到了StopWatch 对象,具体作用参考 StartupInfoLogger.logStarted
2.1、StopWatch 启动与停止(ok)相关推荐
- C# Winform 启动和停止进程
启动和停止进程 一.启动进程 方法1: (1) 创建一个Process组件的实例,例如: Process myProcess = new Process(); (2) 设置其对 ...
- Linux Named 进程启动、停止脚本
脚本名称 dnsnamed 脚本功能: 负责DNS服务器Named进程的启动.停止和状态信息采集等. 参数:start|stop|status 运行环境 OS:Linux Shell:Bash She ...
- [转]使用批处理设置、启动和停止服务
使用批处理设置.启动和停止服务 Pashine 当我们的电脑安装了数据 ...
- AIX上如何启动和停止系统服务
AIX上如何启动和停止系统服务 ----------------------------- 在 AIX 上,服务也可以称为子系统(Subsystem),它是受控于系统资源控制器(System Reso ...
- 本地计算机上的 postgresql 服务启动后停止解决方法
本地计算机上的 postgresql 服务启动后停止解决方法 参考文章: (1)本地计算机上的 postgresql 服务启动后停止解决方法 (2)https://www.cnblogs.com/mr ...
- Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动、停止、重新启动...
Atitit. 软件GUIbutton与仪表盘--webserver区--获取apache配置文件路径 linux and apache的启动.停止.重新启动 能够通过"netstat ...
- Nginx —— nginx的命令行控制(nginx的启动与停止、重载配置文件、回滚日志文件、平滑升级等操作)
在linux中,需要使用命令来控制Nginx服务器的启动与停止.重载配置文件.回滚日志文件.平滑升级等行为. 默认情况下,nginx被安装在目录/usr/local/nginx中,其二进制文件路径为/ ...
- Docker的启动与停止命令
Docker的启动与停止 systemctl命令是系统服务管理器指令 启动docker: systemctl start docker 停止docker: systemctl stop docker ...
- MySql——安装与配置与启动和停止
在Linux上安装mysql数据库,我们可以去其官网上下载mysql数据库的rpm包,http://dev.mysql.com/downloads/mysql/5.6.html#downloads,大 ...
最新文章
- HTMLButton控件下的Confirm()
- 51nod 1038 X^A Mod P( N 次剩余)
- 皮一皮:女友在意的点....是包子!
- src与href的区别
- oracle 跳出内层循环,内层程序中发生异常后,不会继续执行外层程序的语句
- Android应用程序组件Content Provider简要介绍和学习计划
- Java面试题 Java如何进行高效的数组拷贝?【Arrays.copyOf()】
- Thinkpad F2不能进行重命名的问题
- 【UVA - 11383】Claw Golden Tiger (二分图最优匹配,KM算法原理)
- 【今日CV 计算机视觉论文速览 第134期】Fri, 21 Jun 2019
- python有关时间的函数time和datatime
- SaltStack实战之远程执行-Modules
- VSCode 6 月 Java 更新,编辑器就该有编辑器的样子
- 前端人员必须掌握哪些技术?常见缓存种类有什么?
- 赢得黑客马拉松的 9 种方式
- 基于vue-cli的多页面应用脚手架
- performSelector:withObject:afterDelay: 的用法
- OMP算法的物理意义表示
- 半导体界仙童“八叛逆”又一人去世,仅存一人!
- ubuntu下rabbitvcs安装后无右键菜单解决办法
热门文章
- iis swagger 部署_asp.net-core – 虚拟目录中的IIS站点Swagger UI端点
- python encode函数_python_base64和encode函数
- 基础html的网页,[网页设计]HTML基础(五)——
- php获取当天 天气预报,PHP获取当天和72小时天气预报,并生成接口
- Python 创建目录文件夹
- Spring Security中关于认证授权的配置
- 微信公众号web端关闭本页面
- JS中获取地址栏中的参数
- 使用前台方式启动Redis时,出现Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use报错
- jmap查看java进程占用的数据库连接数