前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

1、StopWatch- Spring

StopWatch 对象不是设计为线程安全的,并且不使用同步。

⬤ 一个 StopWatch 实例一次只能开启一个 task ,不能同时 start 多个 task

⬤ 在该 task 还没 stop 之前不能 start 一个新的 task ,必须在该 task stop 之后才能开启新的task

⬤ 若要一次开启多个,需要 new 不同的 StopWatch 实例

1.1、pom

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>${spring.version}</version>
</dependency>

1.2、TestMain

@Test
public void test() throws InterruptedException {

  StopWatch stopWatch = new StopWatch();

  // 任务一模拟休眠3秒钟
  stopWatch.start("TaskOneName");
  Thread.sleep(1000 * 3);
  log.info("当前任务名称:{}", stopWatch.currentTaskName());
  //当前任务名称:TaskOneName
  if (stopWatch.isRunning()) {
    stopWatch.stop();
  }

  // 任务一模拟休眠10秒钟
  stopWatch.start("TaskTwoName");
  Thread.sleep(1000 * 10);
  log.info("当前任务名称:{}", stopWatch.currentTaskName());
  //当前任务名称:TaskTwoName
  if (stopWatch.isRunning()) {
    stopWatch.stop();
  }

  // 打印出耗时
  log.info("stopWatch.prettyPrint():{}", stopWatch.prettyPrint());
  //	stopWatch.prettyPrint():StopWatch '': running time (millis) = 13016
	//	-----------------------------------------
	//	ms     %     Task name
	//	-----------------------------------------
	//	03015  023%  TaskOneName
	//	10001  077%  TaskTwoName

  log.info("stopWatch.shortSummary():{}", stopWatch.shortSummary());
  // stopWatch.shortSummary():StopWatch '': running time (millis) = 13016
  // stop后它的值为null
  log.info("stopWatch.currentTaskName():{}", stopWatch.currentTaskName());
  // stopWatch.currentTaskName():null

  // 最后一个任务的相关信息
  log.info("stopWatch.getLastTaskName():{}", stopWatch.getLastTaskName());
  //stopWatch.getLastTaskName():TaskTwoName
  log.info("stopWatch.getLastTaskInfo():{}", stopWatch.getLastTaskInfo());
  // stopWatch.getLastTaskInfo():org.springframework.util.StopWatch$TaskInfo@73f792cf

  // 任务总的耗时  如果你想获取到每个任务详情(包括它的任务名、耗时等等)可使用
  log.info("所有任务总耗时:{}", stopWatch.getTotalTimeMillis());
	// 所有任务总耗时13016
  log.info("任务总数:{}", stopWatch.getTaskCount());
  //  任务总数2
  log.info("所有任务详情:{}", stopWatch.getTaskInfo());
  // 所有任务详情org.springframework.util.StopWatch$TaskInfo@2ed94a8b
}

ContactAuthor