《 Java併發編程的藝術》筆記
import java.util.concurrent.TimeUnit;
/**
* @Author: yangkun3
* @CreateDate: 2019/3/1
* @Description: 複用在方法調用耗時統計的功能上,在方法的入口前執行begin()方法,
* 在方法調用後執行end()方法,好處是兩個方法的調用不用在一個方法或者類中,比如在
* AOP(面向切面編程)中,可以在方法調用的切入點執行begin()方法,而在方法調用後
* 的切入點執行end()方法,這樣依舊可以獲得方法的執行耗時。
*/
public class Profiler {
private static final ThreadLocal<Long> TIME_THREADLOCAL = new ThreadLocal<Long>() {
@Override
protected Long initialValue() {
return System.currentTimeMillis();
}
};
public static final void begin() {
TIME_THREADLOCAL.set(System.currentTimeMillis());
}
public static final long end() {
return System.currentTimeMillis() - TIME_THREADLOCAL.get();
}
public static void main(String[] args) throws Exception {
Profiler.begin();
TimeUnit.SECONDS.sleep(1);
System.out.println("Cost:" + Profiler.end() + "mills");
}
}