springboot多线程案例
时间: 2023-11-05 12:01:30 浏览: 101
springboot使用多线程和redis队列模拟售票.zip
以下是一个简单的Spring Boot多线程案例,该案例使用了Java的Executor框架来实现多线程任务的执行。
首先,在Spring Boot项目中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
```
然后,创建一个名为TaskService的服务类,该类包含一个名为executeTasks的方法,该方法将启动多个线程来执行任务。
```java
@Service
public class TaskService {
private static final int NUM_THREADS = 10;
public void executeTasks() {
Executor executor = Executors.newFixedThreadPool(NUM_THREADS);
for (int i = 0; i < NUM_THREADS; i++) {
executor.execute(new Task(i));
}
}
private static class Task implements Runnable {
private final int taskId;
public Task(int taskId) {
this.taskId = taskId;
}
@Override
public void run() {
System.out.println("Task " + taskId + " is running on thread " + Thread.currentThread().getName());
}
}
}
```
在该服务类中,我们首先定义了一个常量NUM_THREADS,该常量表示要启动的线程数。然后,我们使用Executor框架创建了一个固定大小的线程池,然后使用循环启动NUM_THREADS个线程,每个线程都是一个Task对象的实例。
Task类是一个实现了Runnable接口的内部类,该类表示一个要执行的任务。在run方法中,我们只是简单地输出一条消息,指示任务正在运行,以及它正在哪个线程上运行。
最后,我们可以在Spring Boot应用程序的控制器类中调用executeTasks方法,以启动多个线程执行任务。
```java
@RestController
public class TaskController {
@Autowired
private TaskService taskService;
@GetMapping("/execute")
public String executeTasks() {
taskService.executeTasks();
return "Tasks have been executed";
}
}
```
在上述控制器类中,我们使用@Autowired注解将TaskService注入到控制器中。然后,我们定义了一个名为executeTasks的GET请求处理程序方法,该方法调用TaskService的executeTasks方法来启动多个线程执行任务。最后,我们返回一个简单的消息,指示任务已经执行。
现在,我们可以通过访问http://localhost:8080/execute来启动多个线程执行任务。每个任务都将输出一条消息,指示它正在哪个线程上运行。
这就是一个简单的Spring Boot多线程案例,使用了Executor框架来实现多线程任务的执行。
阅读全文