setExecuteExistingDelayedTasksAfterShutdownPolicy方法与setContinueExistingPeriodicTasksAfterShutdownPol...

一、setExecuteExistingDelayedTasksAfterShutdownPolicy方法

    这个方法大多是与schedule方法和shutdown方法搭配使用的。

   public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value);

   对value值的分析

情况一、

展示代码:

		executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(true);
		executor.shutdown();

当是true时,在执行shutdown方法后,当前正在等待的任务的和正在运行的任务需要被执行完,然后进程被销毁;

情况二、

展示代码:

		executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
		executor.shutdown();

是false时,表示放弃等待的任务,正在运行的任务一旦完成,则进程被销毁,对与cheduleAtFisedRate方法和scheduleWithFixedDelay方法,则会打断循环,只执行当前正在执行的任务,不会对他们在进行循环执行

二、setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)

    这个方法大多是与cheduleAtFisedRate方法和scheduleWithFixedDelay方法搭配使用的

对value值的分析:

情况一、

executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(true);
executor.shutdown();

当是true时,在cheduleAtFisedRate方法和scheduleWithFixedDelay方法提交的任务会继续循环执行

情况二、

executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(false);
executor.shutdown();

当是false时,

在cheduleAtFisedRate方法和scheduleWithFixedDelay方法提交的任务不会被循环执行,但是会将等待的任务执行完毕,然后进程被销毁

转载于:https://www.cnblogs.com/l1019/p/6769632.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中配置多个多线程需要使用Spring的任务执行器(TaskExecutor)。可以通过实现ThreadPoolTaskExecutor或ScheduledThreadPoolExecutor接口来定义线程池配置。 以下是一个示例配置,同时使用两个线程池: ```java @Configuration @EnableAsync public class AsyncConfig implements AsyncConfigurer { @Bean(name = "taskExecutor1") public TaskExecutor taskExecutor1() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(10); executor.setMaxPoolSize(20); executor.setQueueCapacity(30); executor.initialize(); return executor; } @Bean(name = "taskExecutor2") public TaskExecutor taskExecutor2() { ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5); executor.setRemoveOnCancelPolicy(true); executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(false); executor.setThreadFactory(new CustomThreadFactory("my-thread")); return new ConcurrentTaskExecutor(executor); } @Override public Executor getAsyncExecutor() { return taskExecutor1(); } @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return new SimpleAsyncUncaughtExceptionHandler(); } } ``` 在此示例中,我们使用@EnableAsync注释启用异步处理,并通过实现AsyncConfigurer接口来配置线程池。我们定义了两个线程池:一个ThreadPoolTaskExecutor和一个ScheduledThreadPoolExecutor。 我们还定义了两个任务执行器bean,它们将被异步执行。在getAsyncExecutor()方法中,我们返回了第一个任务执行器bean(taskExecutor1)。如果我们想使用第二个任务执行器bean(taskExecutor2),我们可以更改此方法的返回值。 最后,我们还实现了AsyncUncaughtExceptionHandler接口,以便在异步方法中发生异常时处理它们。在这个例子中,我们使用了Spring提供的SimpleAsyncUncaughtExceptionHandler实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值