线程池使用及配置(基于springboot)
application.properties文件配置
#线程池配置
task.pool.corePoolSize=20
task.pool.maxPoolSize=40
task.pool.keepAliveSeconds=300
task.pool.queueCapacity=50
创建线程配置类
/**
* 线程池配置类
*/
@Data
@ConfigurationProperties(prefix = "task.pool")
public class TaskThreadPoolConfig {
//核心线程池大小
private int corePoolSize;
//最大线程数
private int maxPoolSize;
//活跃时间
private int keepAliveSeconds;
//队列容量
private int queueCapacity;
}
- 创建线程任务
/**
* 创建线程任务
*/
@Component
public class AsyncTask {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@Async("myTaskAsyncPool")//这个名字是 TaskExecutePool 里面的 myTaskAsyncPool 方法 即配置的线程池方法名
public void doTask1(int i)throws InterruptedException{
logger.info("Task: "+i+" started.");
}
}
使用
@Autowired
private AsyncTask asyncTask;
public void test()throws InterruptedException{
for (int i=0;i<100;i++){
asyncTask.doTask1(i);
}
}
查看控制台就可以看到效果了