springBoot项目中使用线程池ThreadPoolExecutor

详细信息查看另一篇文章

//1.在类的开始创建线程池,指定核心线程数,最大线程数,队列满后的存活时间,对列数,队列满后的拒绝策略
ThreadPoolExecutor pool = new ThreadPoolExecutor(
            50,              //coreSize 核心线程数
            200,              //MaxSize 最大线程数
            360,             //60   存活时间
            TimeUnit.SECONDS,        单位(秒)
//            new ArrayBlockingQueue<Runnable>(3)         //指定一种队列  有界队列
            new LinkedBlockingQueue<Runnable>(1000)        //对列数
            , new ThreadPoolExecutor.CallerRunsPolicy()        //拒绝策略(直接由提交任务者执行这个任务)
    );



//2.创建线程(将线程放入线程池中)
class downAgreementThread implements Runnable{
        private Person person;  //参数
        public downAgreementThread(Person person){
            this.person=person;
        }
        @Override
        public void run() {
            try {
                downAgreement(person);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


//3.执行任务
 pool.execute(new downAgreementThread(person));

在Spring Boot创建线程池有多种方式,最常用的是通过配置文件或者Java配置类创建ThreadPoolTaskExecutor来实现。以下是两种常用的方式: 1. 通过配置文件创建线程池 在application.properties或application.yml文件添加以下配置: ``` # 线程池配置 spring.task.execution.pool.core-size=10 spring.task.execution.pool.max-size=20 spring.task.execution.pool.queue-capacity=200 ``` 这里配置了线程池的核心线程数、最大线程数和队列容量。然后在代码注入ThreadPoolTaskExecutor,即可使用线程池了。 ```java @Autowired private ThreadPoolTaskExecutor taskExecutor; public void doSomething() { taskExecutor.execute(new Runnable() { @Override public void run() { // 执行任务 } }); } ``` 2. 通过Java配置类创建线程池 通过创建一个Java配置类来配置线程池。 ```java @Configuration @EnableAsync public class TaskExecutePool { @Bean("taskExecutor") public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(10); executor.setMaxPoolSize(20); executor.setQueueCapacity(200); executor.setThreadNamePrefix("taskExecutor-"); executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); executor.initialize(); return executor; } } ``` 这里通过@Bean注解将ThreadPoolTaskExecutor注入到Spring容器,然后在需要使用线程池的地方通过@Resource或@Autowired注解注入即可。 ```java @Resource(name="taskExecutor") private ThreadPoolTaskExecutor taskExecutor; public void doSomething() { taskExecutor.execute(new Runnable() { @Override public void run() { // 执行任务 } }); } ``` 这样就可以在Spring Boot创建一个线程池了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值