StopWatch用于任务时间监控,在spring及apache中均提供类似的任务时间监控功能类。
1.spring-StopWatch
StopWatch sw = new StopWatch();
sw.start("第一天");
TimeUnit.SECONDS.sleep(1);
sw.stop();
sw.start("第二天");
TimeUnit.SECONDS.sleep(1);
sw.stop();
sw.start("第三天");
TimeUnit.SECONDS.sleep(1);
sw.stop();
System.out.println(sw.prettyPrint());
System.out.println(sw.getTaskCount());
System.out.println(JSON.toJSONString(sw.getTaskInfo()));
System.out.println(sw.getTotalTimeMillis());
System.out.println(sw.isRunning());
执行结果
topWatch '': running time (millis) = 3010
-----------------------------------------
ms % Task name
-----------------------------------------
01005 033% 第一天
01001 033% 第二天
01004 033% 第三天
3
[{"taskName":"第一天","timeMillis":1005,"timeSeconds":1.005},{"taskName":"第二天","timeMillis":1001,"timeSeconds":1.001},{"taskName":"第三天","timeMillis":1004,"timeSeconds":1.004}]
3010
false
2.apach-StopWatch
StopWatch watch = new StopWatch();
watch.start();
//统计从start开始经历的时间
Thread.sleep(1000);
System.out.println(watch.getTime());
//统计计时点
Thread.sleep(1000);
watch.split();
System.out.println(watch.getSplitTime());
//统计计时点
Thread.sleep(1000);
watch.split();
System.out.println(watch.getSplitTime());
//复位后, 重新计时
watch.reset();
watch.start();
Thread.sleep(1000);
System.out.println(watch.getTime());
//暂停
watch.suspend();
System.out.println("暂停2秒钟");
Thread.sleep(2000);
//恢复
watch.resume();
Thread.sleep(1000);
watch.stop();
System.out.println(watch.getTime());
执行结果
1005
2007
3011
1005
暂停2秒钟
2010