@Scheduled 多个定时任务同时执行

简介: 这篇文章主要介绍了springBoot @Scheduled实现多个任务同时开始执行,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@Scheduled 多个定时任务同时执行


1、定时任务是单线程运行的


定时任务是单线程执行的,默认一个时间段只能执行一个定时任务

如果多个定时任务同时执行的话,那么会按照顺序执行


2、多线程开启定时任务


创建线程池,且注入到spring 中,

@EnableScheduling 定时任务扫描,开始定时任务计划支持



@Service
@Component
@EnableScheduling
public class SendMsgNoticeServiceTimer {
    private static final Logger logger = LoggerFactory.getLogger(SendMsgNoticeServiceTimer.class);
    @Autowired
    private NySendMsg nySendMsg;
 //创建定时任务线程池
    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(64);
        return taskScheduler;
    }
    @Scheduled(cron="0 0 10 * * ?")
    public void sendPaymentNotice() {
         logger.info("***-sendPaymentNotice--定时任务每天凌晨10点执行一次---***");
        SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
        String endDate = sf.format(new Date());
        JSONObject obj = sendTradingFeeChoosed(String.valueOf(1));
        logger.info("***---定时任务" + endDate + ":系统自动发送" + obj.size() + "条短信提醒---***");
    }
    @Scheduled(cron="0 0 10 * * ?")
    public void sendLateRemind() {
         logger.info("***--sendLateRemind---定时任务每天凌晨10点执行一次---***");
        SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
        String endDate = sf.format(new Date());
        JSONObject obj = sendTradingFeeChoosed(String.valueOf(2));
        logger.info("***---定时任务" + endDate + ":系统自动发送" + obj.size() + "条短信提醒---***");
    }



目录
相关文章
|
前端开发 算法 数据安全/隐私保护
在前端对登录密码进行加密,md5+盐值
在前端对登录密码进行加密,md5+盐值
980 0
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
13406 1
|
Java 调度 Spring
Spring之定时任务基本使用篇
本文介绍了在Spring Boot项目中使用定时任务的基本方法。主要通过`@Scheduled`注解实现,需添加`@EnableScheduling`开启定时任务功能。文中详细解析了Cron表达式的语法及常见实例,如每秒、每天特定时间执行等。此外,还探讨了多个定时任务的执行方式(并行或串行)及其潜在问题,并留待后续深入讨论。
610 64
|
Java 调度 Spring
SpringBoot多个@Scheduled注解的方法,会阻塞吗
【6月更文挑战第9天】SpringBoot多个@Scheduled注解的方法,会阻塞吗
1714 5
|
算法 安全 区块链
一文说明白ECDSA secp256k1 secp256r1 EdDSA ed25519千丝万缕的关系
文章深入探讨了ECDSA和EdDSA两种数字签名算法及其具体实现secp256k1、secp256r1和ed25519之间的联系和区别,分析了ECDSA的安全性问题和EdDSA的改进,以及它们在加密货币和区块链技术中的应用。
1506 0
一文说明白ECDSA secp256k1 secp256r1 EdDSA ed25519千丝万缕的关系
|
JSON 前端开发 Java
Validated、Valid 、Validator,他们的区别你知道几个
对于任何基本验证,我们将在方法调用中使用 JSR @Valid注释。另一方面,对于任何组验证,包括组序列,我们需要 在我们的方法调用中使用 Spring 的@Validated注释。
Validated、Valid 、Validator,他们的区别你知道几个
|
IDE Java API
IDEA 2022 之 Lombok 使用 教程
IDEA 2022 之 Lombok 使用 教程
1468 0
|
安全 Java 应用服务中间件
Spring Boot 实现程序的优雅退出
Spring Boot 实现程序的优雅退出
手把手教会你使用Markdown【从入门到精通一篇就够了】
手把手教会你使用Markdown【从入门到精通一篇就够了】
|
消息中间件 Java RocketMQ
Spring Boot与RocketMQ的集成
Spring Boot与RocketMQ的集成