非同步執行緒池中加入MDC引數

2021-10-11 15:55:12 字數 436 閱讀 2970

在專案中需要非同步執行任務方法,但是非同步執行時會使用另乙個執行緒。因為mdc的引數時基於threadlocal的,每個執行緒都保留乙份。這樣就造成非同步執行緒的日誌id沒有或者跟前乙個日誌id不一致,不便於查詢日誌。

解決方法:

自定義任務裝飾器,並配置到執行緒池

@bean

("taskexecutor"

)public executor taskexecutor()

public

class

mdctaskdecorator

implements

taskdecorator

runnable.

run();

}finally};

}}

向執行緒池中放入非同步操作

static void main string args state console.writeline worker thread id thread.currentthread.managedthreadid thread.sleep timespan.fromseconds 2 lambda ...

執行緒池中的七大引數(三)

1 corepoolsize 執行緒池中的常駐核心執行緒數。2 maximumpoolsize 執行緒池能夠容納同時執行的最大執行緒數,此值大於等於1。3 keepalivetime 多餘的空閒執行緒存活時間,當空間時間達到keepalivetime值時,多餘的執行緒會被銷毀直到只剩下corepoo...

為什麼要在方法的傳入引數中加入final關鍵詞修飾

唯一且準確的是,防止在方法的內部被修改呼叫 舉個例子 int i 100 int j 10 i 11 j 22 int add int i intj return i j 在這裡我們可以看到在呼叫方法之前我們已經宣告了i,j的值,無論是否在入參時設定final,傳入的引數都不會是最初時的100 10...