最近写了一个基于ThreadLocal的计时小工具,先看看代码:
public class TimeRecordUtil {
private static final ThreadLocal<Long> START_TIME = new ThreadLocal<>();
/**
* (第一步调用)开始调用
*/
public static void startInvoke() {
START_TIME.remove();
START_TIME.set(System.currentTimeMillis());
}
/**
* (第二步调用)调用结束
*
* @return
*/
public static long invokeDuration() {
long duration = System.currentTimeMillis() - START_TIME.get();
START_TIME.remove();
return duration;
}
}
使用说明:
1.基于ThreadLocal实现,多线程环境下也可以使用
2.适合记录rpc调用时间
3.尽量结对使用
4.禁止嵌套使用,因为单线程的时候,嵌套使用会有问题