|
@@ -0,0 +1,69 @@
|
|
|
+package com.ruoyi.framework.manager;
|
|
|
+
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
|
+import org.springframework.util.concurrent.ListenableFuture;
|
|
|
+
|
|
|
+import java.util.concurrent.Callable;
|
|
|
+import java.util.concurrent.Future;
|
|
|
+import java.util.concurrent.ThreadPoolExecutor;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description TODO
|
|
|
+ * @Author liqinglong
|
|
|
+ * @DateTime 2021-07-02 17:36
|
|
|
+ * @Version 1.0
|
|
|
+ */
|
|
|
+public class VisiableThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(VisiableThreadPoolTaskExecutor.class);
|
|
|
+ private void showThreadPoolInfo(String prefix){
|
|
|
+ ThreadPoolExecutor threadPoolExecutor = getThreadPoolExecutor();
|
|
|
+ if(null == threadPoolExecutor){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ logger.info("{},{},taskCount [{}],completedTaskCount [{}],activeCount [{}],queueSize[{}]",
|
|
|
+ this.getThreadNamePrefix(),
|
|
|
+ prefix,
|
|
|
+ threadPoolExecutor.getTaskCount(),
|
|
|
+ threadPoolExecutor.getCompletedTaskCount(),
|
|
|
+ threadPoolExecutor.getActiveCount(),
|
|
|
+ threadPoolExecutor.getQueue().size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void execute(Runnable task) {
|
|
|
+ showThreadPoolInfo("1.do execute");
|
|
|
+ super.execute(task);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void execute(Runnable task, long startTimeout) {
|
|
|
+ showThreadPoolInfo("2.do execute");
|
|
|
+ super.execute(task, startTimeout);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Future<?> submit(Runnable task) {
|
|
|
+ showThreadPoolInfo("1.do submit");
|
|
|
+ return super.submit(task);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public <T> Future<T> submit(Callable<T> task) {
|
|
|
+ showThreadPoolInfo("2.do submit");
|
|
|
+ return super.submit(task);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ListenableFuture<?> submitListenable(Runnable task) {
|
|
|
+ showThreadPoolInfo("1.do submitListenable");
|
|
|
+ return super.submitListenable(task);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public <T> ListenableFuture<T> submitListenable(Callable<T> task) {
|
|
|
+ showThreadPoolInfo("2.do submitListenable");
|
|
|
+ return super.submitListenable(task);
|
|
|
+ }
|
|
|
+}
|