自学内容网 自学内容网

java springboot定时任务、创建线程池,创建定时任务

java springboot定时任务、创建线程池,创建定时任务

在Java Spring Boot中配置定时任务线程池有以下几个配置项:

  1. spring.task.scheduling.pool.size:指定定时任务线程池的大小,默认为1。
  2. spring.task.scheduling.thread-name-prefix:指定线程名称的前缀,默认为task-
  3. spring.task.scheduling.await-termination-period:指定在应用关闭时等待定时任务线程池终止的时间,默认为10秒。

下面是一个简单的定时任务线程池的代码示例:

@Configuration
@EnableScheduling
public class TaskSchedulerConfig implements SchedulingConfigurer {

    private final int poolSize = 10;

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
        threadPoolTaskScheduler.setPoolSize(poolSize);
        threadPoolTaskScheduler.setThreadNamePrefix("my-task-");
        threadPoolTaskScheduler.initialize();

        taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
    }
}

在上述代码中,我们创建了一个大小为10的定时任务线程池,并设置了线程名称的前缀为my-task-。然后,通过taskRegistrar.setTaskScheduler(threadPoolTaskScheduler)将线程池配置应用到定时任务中。

接下来,我们可以使用上述定时任务线程池创建不同类型的定时任务。

  1. 定时任务延时执行:
@Component
public class DelayedTask {

    @Scheduled(fixedDelay = 5000) // 每隔5秒执行一次
    public void delayedTask() {
        // 执行任务逻辑
    }
}
  1. 定时执行任务:
@Component
public class ScheduledTask {

    @Scheduled(cron = "0 0 0 * * *") // 每天的午夜执行
    public void scheduledTask() {
        // 执行任务逻辑
    }
}

通过@Scheduled注解可以指定任务的调度规则,如fixedDelay表示间隔固定的时间执行,cron表示基于Cron表达式的定时调度。

同时,还可以在需要的地方注入TaskScheduler,手动创建定时任务:

@Component
public class ManualTask {

    private final TaskScheduler taskScheduler;

    public ManualTask(TaskScheduler taskScheduler) {
        this.taskScheduler = taskScheduler;
    }

    public void scheduleTask() {
        taskScheduler.schedule(() -> {
            // 执行任务逻辑
        }, new CronTrigger("0 0 0 * * *"));
    }
}

通过调用taskScheduler.schedule()方法可以手动创建一个定时任务,并指定任务的执行逻辑和调度规则。

注意:以上示例中的定时任务需要在入口类(如@SpringBootApplication所标注的类)中添加@EnableScheduling注解开启定时任务的支持。


原文地址:https://blog.csdn.net/qq_38105536/article/details/142858002

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!