Spring注解@Scheduled 多线程异步执行

一、前言:Spring 定时任务@Schedule的使用方式,默认是单线程同步执行的,启动过程是一个单线程同步启动过程,一旦中途被阻塞,会导致整个启动过程阻塞,

其余的定时任务都不会启动。

二、@Schedule注解多线程的实现:多个定时任务的执行,通过使用@Async注解 来实现多线程异步调用。

1 @Scheduled(cron = "0/2 * * * * ?") //cron表达式,表示每隔两秒钟执行该任务 2 @Async 3 public void doTask() throws InterruptedException { System.out.println("当前线程名:"+Thread.currentThread().getName()+"start run Task"); Thread.sleep(6*1000);

   解释:该程序实现了同一任务 多个线程开启的实现。每个任务之间不受影响,即异步执行。该程序的最大线程池默认是@Async的最大容量 100,有时候我们可能不需要那么多,自己可以通过程序去配置一个线程池数量,如下:

三、配置线程池数量

    public class BeanConfig{

        @Bean

        public TaskScheduler taskScheduler(){

              ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();

              taskScheduler .setPoolSize(5);//定义线程池数量为5 个

              return taskScheduler ;

        }

   }

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

@Scheduled注解

1概述@Scheduled注解是springboot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行.注意需要配合@EnableScheduling使用,配置@Scheduled主要有三种配置执行时间的方式,cron,fixedRate,fixedDelay.2croncron是

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid

Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移