application: config: threadpool: ExecutorPool: corePoolSize: 16 maxPoolSize: 64 queueCapacity: 128 使用类取继承该类指向的线程池: @Override public void afterPropertiesSet() throws Exception { executor = applicationThreadPoolFac
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); } }