springboot线程池

本文通过一个例子展示了SpringBoot中如何使用线程池。在Service中定义了两个线程方法,当控制器调用这些方法时,发现它们在不同的线程中运行。通过配置线程池,可以实现任务的异步执行,并控制线程的同步行为。在Config中创建SyncConfiguration类,导入线程相关包,并在Service中应用线程池。
摘要由CSDN通过智能技术生成

service中的两个线程方法

@Slf4j
@Service
public class Score {
    @Async
    public void addScore(){
        try {
            Thread.sleep(5000);
            log.info("处理积分1");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    @Async("scorePoolTaskExecutor")
    public void addScore2(){
        try {
            Thread.sleep(5000);
            log.info("处理积分2");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

在控制器中调用这个方法时,会先执行控制器中的方法,

@Configuration

@EnableAsync

@Autowired

private Score score;

@GetMapping("/score1")

public String score1(){

    log.info("这是主线程");

    this.score.addScore();

    return "ok";

}

可以看到输出这是主线程和过5秒后输出处理积分1,是不同的线程

但是会立刻输出okÿ

在Spring Boot中,可以使用`@EnableAsync`注解开启异步执行的支持,并通过配置来创建和管理线程池。 以下是一个示例代码,演示如何在Spring Boot中配置和使用线程池: 首先,在Spring Boot的启动类上添加`@EnableAsync`注解开启异步执行的支持: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication @EnableAsync public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 然后,在需要异步执行的方法上添加`@Async`注解,表示该方法将被异步执行: ```java import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; @Component public class MyService { @Async public void asyncMethod() { // 异步执行的逻辑代码 } } ``` 在上述示例中,`MyService`类中的`asyncMethod()`方法被标记为异步执行,当调用该方法时,Spring Boot会自动将其放入线程池中执行。 默认情况下,Spring Boot会创建一个线程池来处理异步任务。可以通过在`application.properties`或`application.yml`文件中配置相关属性来自定义线程池的参数。例如,可以配置线程池的大小、队列容量等等。下面是一个示例配置: ```properties spring.task.execution.pool.core-size=5 spring.task.execution.pool.max-size=10 spring.task.execution.pool.queue-capacity=25 ``` 通过以上配置,线程池的核心线程数为5,最大线程数为10,任务队列容量为25。 需要注意的是,Spring Boot默认使用的是`ThreadPoolTaskExecutor`作为线程池的实现类,但也可以根据需要自行配置其他的线程池实现类。 通过以上的配置和注解,就可以在Spring Boot中方便地创建和使用线程池来处理异步任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值