|
@@ -0,0 +1,40 @@
|
|
|
+package com.tzld.piaoquan.recommend.server.common;
|
|
|
+
|
|
|
+import org.slf4j.MDC;
|
|
|
+
|
|
|
+import java.util.Map;
|
|
|
+import java.util.concurrent.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author dyp
|
|
|
+ */
|
|
|
+public class CommonThreadPoolExecutor extends ThreadPoolExecutor {
|
|
|
+ public CommonThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
|
|
|
+ super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
|
|
|
+ }
|
|
|
+
|
|
|
+ public CommonThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory) {
|
|
|
+ super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory);
|
|
|
+ }
|
|
|
+
|
|
|
+ public CommonThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler) {
|
|
|
+ super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, handler);
|
|
|
+ }
|
|
|
+
|
|
|
+ public CommonThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) {
|
|
|
+ super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, handler);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void execute(Runnable command) {
|
|
|
+ Map<String, String> mdcMap = MDC.getCopyOfContextMap();
|
|
|
+ super.execute(() -> {
|
|
|
+ if (mdcMap != null) {
|
|
|
+ MDC.setContextMap(mdcMap);
|
|
|
+ }
|
|
|
+ command.run();
|
|
|
+ MDC.clear();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+}
|