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
月域 1~12的整数或JAN~DEC   *    -    ,    /
周域 1~7的整数或SUN~SAT   *    -    ,    /    ?    L    # 

    符号的意义:

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

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

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

      , 表示枚举值;

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

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

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

猜你喜欢

转载自www.cnblogs.com/xp2h/p/12410217.html