线程池的配置说明

application:
  config:
    threadpool:
      ExecutorPool:
        corePoolSize: 16
        maxPoolSize: 64
        queueCapacity: 128

使用类取继承该类指向的线程池:

@Override
public void afterPropertiesSet() throws Exception {
executor = applicationThreadPoolFactory.newExecutor("ExecutorPool");
}
@Resource
    private ConfigReader configReader;
    
    @Resource
    private TransactionRejectedExecutionHandler rejectedHandler;
    
    public ApplicationThreadPoolConfig getPoolConfig(String namePrefix){
        Integer corePoolSize = configReader.getProperty("threadpool."+namePrefix, "corePoolSize", Integer.class, 20);
        Integer maxPoolSize = configReader.getProperty("threadpool."+namePrefix, "maxPoolSize", Integer.class, 40);
        Integer queueCapacity = configReader.getProperty("threadpool."+namePrefix, "queueCapacity", Integer.class, 10);
        looger.info("##ThreadPoll -- Config: {}; corePoolSize={}", namePrefix, corePoolSize);
        looger.info("##ThreadPoll -- Config: {}; maxPoolSize={}", namePrefix, maxPoolSize);
        looger.info("##ThreadPoll -- Config: {}; queueCapacity={}", namePrefix, queueCapacity);
        ApplicationThreadPoolConfig config = new ApplicationThreadPoolConfig();
        config.setCorePoolSize(corePoolSize);
        config.setMaxPoolSize(maxPoolSize);
        config.setQueueCapacity(queueCapacity);
        return config;
    }
    
    
    public Executor newExecutor(String namePrefix, int corePoolSize, int maxPoolSize, int queuedSize) {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(corePoolSize);
        executor.setMaxPoolSize(maxPoolSize);
        executor.setQueueCapacity(queuedSize);
        executor.setThreadNamePrefix(namePrefix);
        executor.setRejectedExecutionHandler(rejectedHandler);
        executor.initialize();
        return executor;
    }

    public Executor newExecutor(String namePrefix) {
        ApplicationThreadPoolConfig poolConfig = getPoolConfig(namePrefix);
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(poolConfig.getCorePoolSize());
        executor.setMaxPoolSize(poolConfig.getMaxPoolSize());
        executor.setQueueCapacity(poolConfig.getQueueCapacity());
        executor.setThreadNamePrefix(namePrefix);
        executor.setRejectedExecutionHandler(rejectedHandler);
        executor.initialize();
        return executor;
    }
//获取环境变量配置的类
public
class ConfigReader { public static final String PREDIX = "application.config"; @Resource private Environment env; public String getProperty (String scope, String key) { key = Strings.join(new String[]{PREDIX, scope, key}, "."); return env.getProperty(key); } public String getRequiredProperty (String scope, String key) { key = Strings.join(new String[]{PREDIX, scope, key}, "."); return env.getRequiredProperty(key); } public String getProperty (String scope, String key, String defaultValue) { key = Strings.join(new String[]{PREDIX, scope, key}, "."); return env.getProperty(key, defaultValue); } public <T> T getProperty (String scope, String key, Class<T> targetType, T defaultValue) { key = Strings.join(new String[]{PREDIX, scope, key}, "."); return env.getProperty(key, targetType, defaultValue); } public <T> T getRequiredProperty (String scope, String key, Class<T> targetType, T defaultValue) { key = Strings.join(new String[]{PREDIX, scope, key}, "."); return env.getProperty(key, targetType, defaultValue); } }

 

转载于:https://www.cnblogs.com/otways/p/11196693.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值