ELADMIN 在线文档 ELADMIN 在线文档
  • 快速开始
  • 后端手册
  • 前端手册
  • 部署项目
常见问题
支持项目
特别鸣谢
主机推广
在线体验 (opens new window)
  • 快速开始
  • 后端手册
  • 前端手册
  • 部署项目
常见问题
支持项目
特别鸣谢
主机推广
在线体验 (opens new window)
  • 快速开始

    • 简介
    • 快速了解
    • 快速开始
  • 后端手册

    • 新增模块
    • 权限控制
    • 通用查询
    • 系统缓存
    • 异常处理
    • 系统日志
    • 数据权限
    • 定时任务
    • 代码生成
    • 运维管理
    • 系统工具
    • 其他杂项
      • 系统基类
      • 服务监控
      • 异步线程池
      • 线程池工具类
  • 前端手册

    • 菜单路由
    • 自定义主键
    • 多字段排序
    • 隐藏操作按钮
    • 使用数据字典
    • 统一异常处理
    • 部分系统组件
  • 部署项目

    • 常规部署方式
    • 容器部署方式

其他杂项

# 系统基类

2.3 版本加入了 Entity 基类 和 DTO 基类,大家可以按需去继承和修改,代码路径

eladmin-common -> me.zhengjie.base
1

# 服务监控

# 异步线程池

该版本重写了spring默认线程池,代码地址:

eladmin-system -> me.zhengjie.config.AsyncTaskExecutePool
1

源码如下:

@Slf4j
@Configuration
public class AsyncTaskExecutePool implements AsyncConfigurer {

    //注入配置类
    private final AsyncTaskProperties config;

    public AsyncTaskExecutePool(AsyncTaskProperties config) {
        this.config = config;
    }

    @Override
    public Executor getAsyncExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        //核心线程池大小
        executor.setCorePoolSize(config.getCorePoolSize());
        //最大线程数
        executor.setMaxPoolSize(config.getMaxPoolSize());
        //队列容量
        executor.setQueueCapacity(config.getQueueCapacity());
        //活跃时间
        executor.setKeepAliveSeconds(config.getKeepAliveSeconds());
        //线程名字前缀
        executor.setThreadNamePrefix("el-async-");
        // setRejectedExecutionHandler:当pool已经达到max size的时候,如何处理新任务
        // CallerRunsPolicy:不在新线程中执行任务,而是由调用者所在的线程来执行
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        executor.initialize();
        return executor;
    }

    @Override
    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
        return (throwable, method, objects) -> {
            log.error("===="+throwable.getMessage()+"====", throwable);
            log.error("exception method:"+method.getName());
        };
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

使用方式如下

// 在 service 的方法上使用注解
@Async
1
2

# 线程池工具类

通过该工具类可以快速创建一个线程池,目前在 定时任务模块中使用到 ,代码地址:

eladmin-system -> me.zhengjie.config.ThreadPoolExecutorUtil
1

源码如下:

/**
 * 用于获取自定义线程池
 * @author Zheng Jie
 * @date 2019年10月31日18:16:47
 */
public class ThreadPoolExecutorUtil {

    public static ThreadPoolExecutor getPoll(){
        AsyncTaskProperties properties = SpringContextHolder.getBean(AsyncTaskProperties.class);
        return new ThreadPoolExecutor(
                properties.getCorePoolSize(),
                properties.getMaxPoolSize(),
                properties.getKeepAliveSeconds(),
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(properties.getQueueCapacity()),
                new TheadFactoryName()
        );
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

使用方式:

private final static ThreadPoolExecutor executor = ThreadPoolExecutorUtil.getPoll();
1
帮助我们改善此页面! (opens new window)
上次更新: 2022/08/02, 14:02:38
系统工具
菜单路由

← 系统工具 菜单路由→

Theme by Vdoing | Copyright © 2018-2023 知了博客
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×