天天看點

Java ThreadLocal應用執行個體 擷取方法運作時間

之前寫了一個AOP形式發送日志給Kafka的demo

日志中有一個字段-擷取方法運作時間

這個要求看起來簡單(其實也簡單)

在高并發的情況下不能使用普通變量long

使用ThreadLocal更合适(防止同時多次請求時資料被改變)

public final static ThreadLocal<Long> s = new ThreadLocal<>();

    @Before("@annotation(systemLog)")
    public void addTime(SystemLog systemLog) {
        this.s.set(System.currentTimeMillis());
    }

    @After("@annotation(systemLog)")
    public void Log(SystemLog systemLog){
    	System.out.println(System.currentTimeMillis() - this.s.get())
    }