• SpringBoot中定时任务默认是串行执行 如何设置并行


    SpringBoot项目中,定时任务默认是串行执行的,不论启动多少任务,都是一个执行完成,再执行下一个。

    如何设置并行呢? @EnableAsync  和@Async 这两个注解来实现 ,具体如下:

    pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>mydemo</artifactId>
            <groupId>com.itstudy</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>mvcdemo</artifactId>
    
        <name>mvcdemo</name>
        <url>http://www.example.com</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.30</version>
            </dependency>
    
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-dependencies</artifactId>
                    <version>1.5.9.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>

    启动文件App.java

    @EnableScheduling
    @EnableAsync
    @SpringBootApplication
    public class App
    {
        public static void main( String[] args )
        {
            System.out.println( "Hello World!" );
    
            SpringApplication app = new SpringApplication(App.class);
            //关闭banner
            app.setBannerMode(Banner.Mode.OFF);
            app.run(args);
        }
    }
    @Service
    @Async
    public class TaskSecond {
    
        private Logger logger = LoggerFactory.getLogger(TaskSecond.class);
        //@Scheduled( cron = "0/2 * * * * * ")
        @Scheduled(fixedDelay = 20000,initialDelay = 2000)
        public void test(){
            try {
                logger.info(" second start");
    
                TimeUnit.SECONDS.sleep(10);
               logger.info(" second end");
    
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    @Service
    @Async
    public class TaskFirst {
        private Logger logger = LoggerFactory.getLogger(TaskSecond.class);
        //@Scheduled( cron = "0/2 * * * * * ")
        @Scheduled(fixedDelay = 20000,initialDelay = 2000)
        public void test(){
            try {
                logger.info(" first start");
    
                TimeUnit.SECONDS.sleep(10);
                logger.info(" first end");
    
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    centos8 安装postresql12
    vs code 开启远程调试步骤
    node 版本管理器 nvs
    Vue I18n Vue.js 的国际化插件+elementUI的使用
    c#结构
    下拉菜单
    使用Convert 类和Parse方法将字符串转换为数值类型
    c# try..... catch
    c#迭代算法
    网页兼容各种浏览器
  • 原文地址:https://www.cnblogs.com/liuxm2017/p/10688814.html
Copyright © 2020-2023  润新知