在專案中需要非同步執行任務方法,但是非同步執行時會使用另乙個執行緒。因為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...