java 监控执行时间_java-监测方法运行时间 | 学步园
java-監測方法運行時間
方式1:
public void doTest() {
long time = System.currentTimeMillis();
//...
time = System.currentTimeMillis() - time;
System.out.println("process time: " + time + " ms");
}
方式2:
鏈接:http://jinnianshilongnian.iteye.com/blog/1670856
//如果采用springmvc的攔截器攔截記錄處理時間,由于攔截器是單例的。
//不管用戶請求多少次都只有一個攔截器實現,即線程不安全。那我們應該怎么記錄時間呢?
//我們可以使用ThreadLocal,它是線程綁定的變量,提供線程局部變量
(一個線程一個ThreadLocal,A線程的ThreadLocal只能看到A線程的ThreadLocal,不能看到B線程的ThreadLocal)
public class StopWatchHandlerInterceptor extends HandlerInterceptorAdapter {
private NamedThreadLocal startTimeThreadLocal = new NamedThreadLocal("StopWatch-StartTime");//Spring提供的一個命名的ThreadLocal實現。
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
long beginTime = System.currentTimeMillis();//1、開始時間
startTimeThreadLocal.set(beginTime);//線程綁定變量(該數據只有當前請求的線程可見)
return true;//繼續流程
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
long endTime = System.currentTimeMillis();//2、結束時間
long beginTime = startTimeThreadLocal.get();//得到線程綁定的局部變量(開始時間)
long consumeTime = endTime - beginTime;//3、消耗的時間
if(consumeTime > 500) {//此處認為處理時間超過500毫秒的請求為慢請求
//TODO 記錄到日志文件
System.out.println(String.format("%s consume %d millis", request.getRequestURI(), consumeTime));
}
}
}
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java 监控执行时间_java-监测方法运行时间 | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 64进制转10进制_java进
- 下一篇: add binary java_Leet