Skip to main content

6. Implement task executor

Trong phần này, chúng ta sẽ tìm hiểu cách triển khai task executor trong ứng dụng Spring Boot của chúng ta. Task executor cho phép chúng ta quản lý và điều phối các tác vụ bất đồng bộ một cách hiệu quả hơn.

Cấu hình

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

@Configuration
public class TaskExecutorConfig {
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(25);
executor.setThreadNamePrefix("TaskExecutor-");
executor.initialize();
return executor;
}
}

Áp dụng


import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;

@Service
public class ConcurrentTaskService {
private final ThreadPoolTaskExecutor taskExecutor;

public ConcurrentTaskService(ThreadPoolTaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}

public void executeTask() {
taskExecutor.submit(() -> {
System.out.println("Executing task in thread: " + Thread.currentThread().getName());
// Simulate a task
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
}

Kết luận:

  • ThreadPoolTaskExecutor: Quản lý một nhóm các luồng để thực hiện các tác vụ đồng thời.
  • taskExecutor.submit(): Gửi một tác vụ để thực hiện trong một trong các luồng có sẵn trong nhóm.