zoukankan      html  css  js  c++  java
  • Springboot之异步任务和任务调度

    1、异步任务

      异步方法调用是相当于多个线程执行,不需要等待上一行代码的执行结果。

      使用方法:

        启动类上面使用@EnableAsync注释,表示开启异步方法调用;

        方法上使用@Async注解,来表示这是个异步方法;

        Future  用于接收异步方法的返回类型;

      • get()  获取异步返回值
      • isDone()  判断异步方法是否完成
      • isCancelled  是否取消
      • cancel()  取消
      @Async
        public Future<String> sayHello(){
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("你好啊啊...");
            return new AsyncResult<String>("我任务返程了");
        }

    2、任务调度

      使用方法:

         启动类上面使用@EnableScheduling注释,表示开启定时方法调用;

         方法上使用@Scheduled注解,来表示这是个定时方法;@Scheduled中的cron属性,用于定义时间点;

    //  秒 分 时  天  月 周几
        @Scheduled(cron = "3 * * * * ?")
        public void sayHello(){
            System.out.println("早上好");
        }

        cron表达式说明:

    域名 可取值 可取符号(仅列部分常用)
    秒域 0~59的整数   *    -    ,    /
    分域 0~59的整数   *    -    ,    /
    时域 0~23的整数   *    -    ,    /
    日域 1~31的整数   *    -    ,    /    ?    L W
    月域 1~12的整数或JAN~DEC   *    -    ,    /
    周域 1~7的整数或SUN~SAT   *    -    ,    /    ?    L    # 

        符号的意义:

          * 表示可以匹配该域的所有值;

          ?在cron表达式中必须出现且只能出现1次,用在日域或周域上(二选一),表示不确定值、不限制值;

          - 表示匹配该域上的一个范围;

          , 表示枚举值;

          / 表示起始时间和间隔时间;

          # 只能用于周域上,#后面的数字表示第几周,如果不存在这个周的值,则不执行;

          L 只能用于日域或周域,用于日域时表示当月最后一天,用于周域如果前面不加数字表示周六,加数字表示最后一个周值;

          W 工作日;
        

  • 相关阅读:
    VS code 快捷键注释不能用[!----]解决办法
    vue 文件导出demo
    vue中后台返回的是数字,前端利用字典将其转换为相对应的中文
    java.lang.UnsupportedOperationException解决方法【转】
    Java List的remove()方法陷阱
    密码至少包含数字、大小写字母、特殊字符两种以上,长度不小于8位
    获取规格内数字
    获取时间段数据
    Echarts GL初次体验
    bootstrap-datetimepicker 如何获取值(日期)
  • 原文地址:https://www.cnblogs.com/xp2h/p/12410217.html
Copyright © 2011-2022 走看看