针对同一个方法,在生产环境上,无法确认到底是通过哪几个方法,调用的此方法导致的高并发情况,可以根据日志,进行记录Trace 执行链;
语句:
String className = Thread.currentThread().getStackTrace()[2].getClassName(); //调用的类
String methodName = Thread.currentThread().getStackTrace()[2].getMethodName(); //调用的方法
int lineNumber = Thread.currentThread().getStackTrace()[2].getLineNumber(); //调用的行号
Thread.currentThread().getStackTrace() 是什么?
可以输出整个调用链,可以分析到每一个执行链的信息;
private void methodInterceptor() {
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
for(StackTraceElement stackTraceElement : stackTraceElements) {
System.out.println(stackTraceElement);
}
}