记录ThreadPoolTaskExecutor
新提交的线程流程
配置信息
@Bean
ThreadPoolTaskExecutor eventThreadPoolTaskExecutor() {
ThreadPoolTaskExecutor poolTaskExecutor = new ThreadPoolTaskExecutor();
poolTaskExecutor.setTaskDecorator(new MdcTaskDecorator());
poolTaskExecutor.setQueueCapacity(5000);
poolTaskExecutor.setCorePoolSize(60);
poolTaskExecutor.setMaxPoolSize(900);
poolTaskExecutor.setKeepAliveSeconds(60); poolTaskExecutor.setAllowCoreThreadTimeOut(isAllowCoreThreadTimeOut());
return poolTaskExecutor;
}
并发测试:
{
int maxThread=20000;
@Autowired
private ThreadPoolTaskExecutor executor;
public void test(){
for (int i = 0; i < maxThread; i++) {
final int acount = i;
executor.execute(new Runnable() {
@Override
public void run() {
LoggerUtil.info(LOGGER, “run a new thread={},count={}”, acount, appInfo.getVersionCode());
}
});
}
}
}
测试结果:
从结果中直接是拒绝了。
原因是上面的流程图成立,很好的说明了新增加的工作线程流程