让方法被调用后异步的执行

一般来说,要异步执行一个任务都是创建一个线程来专门干这个任务。在springboot中有 @Async 这个注解快速实现方法的异步执行。只需要两步:第一步: 在启动类上加上@EnableAsync注解,表示这个程序支持异步的方法。如下:

@EnableAsync
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}

第二步:在service层的类的方法上写上@Async注解,表示这个方法是异步执行的。如下:

@Service
public class MyService {
@Async
public void doA() {
//doSomething
}
}

这样,doA()方法被外部调用后就是异步执行的了。

注意:1. 要想使被调用的方法确实是异步的执行,必须是外部调用,在本类的内部其他方法调用此方法仍然是同步的。也因此,异步方法必须是public修饰。

2.关于返回值: 由于是异步执行方法,这个方法被调用后因此我们也无法知道它什么时候执行完毕。因此在异步方法前加上返回值是会出问题的。例如:

@Service
public class MyService {
@Async
public Integer doA() {
//doSomething
return 1;
}
}
--------------------------------------
public class Test {
public static void main(String[] args) {
MyService ms = new MyService();
System.out.println(ms.doA()); //尝试调用异步方法 doA 获得返回值,并输出
}
}

这样是不能正常获得doA()方法的返回值的,因为在我们输出doA()的返回值时,doA()甚至可能一行代码都没执行完毕。

所以如果异步方法不是void返回类型,为其他返回类型时被调用一律直接返回 null,如果返回类型是基本数据类型由于返回的是 null 则可能抛出装箱异常。

如果确实需要获取异步方法的返回值,则需要使用Future类:

@Service
public class MyService {
@Async
public Future<Integer> doA() { //使用Future类接收返回值
//doSomething
return 1;
}
}

Future类的具体用法这里不讲。

让方法定时的执行

要将一个方法变为定时执行,步骤与上面一样,首先在启动类上加注解 @EnableScheduling,然后在具体的方法上加上 @Scheduled 注解即可。要使用@Scheduled注解完成目标,主要是要熟练使用注解的参数。

(图片来源于葛香东视频课 《springboot 编写restful api》)

cron是按指定时钟定时执行,一般需要搭配zone指定时区。

其他三个参数则是方法按指定频率或间隔执行。

cron是一个字符串,用来表示定时执行的具体规则。从左至右分别为 “秒 分 时 日 月 星期几 年” 年可为空 ,表示任意年。

举例:

springboot--异步执行的方法及定时执行的方法的更多相关文章

  1. ASP.NET MVC计划任务实现方法(定时执行某个功能)

    系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法. 1.首先修改Glocal.asax文件,在 ...

  2. ASP.NET MVC4计划任务实现方法(定时执行某个功能)

    系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法. 1.首先修改Glocal.asax文件,在 ...

  3. 小记---------手动执行脚本正常执行,使用crontab定时执行时 不执行

    可能出现的原因就是因为crontab不会从用户的/etc/profile文件中读取环境变量,所以就出现 使用定时crontab执行时 无法执行 抛错 所以在使用crontab 定时执行脚本时  在脚本 ...

  4. (转载)php中实现定时执行计划任务方法

    (转载)http://www.111cn.net/phper/php/41216.htm PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设 ...

  5. mysql定时执行及延时执行,实现类似sql server waitfor功能

    熟悉SQL Server的人都知道,它有一个很有用的功能,waitfor time和waitfor delay,前者表示在某个时间执行,后者表示等待多长时间执行.在我们测试功能和定时执行的时候特别有用 ...

  6. windows上定时执行php文件

    <?php $fp = fopen("E:/wwwroot/test/plan.txt", "w+"); fwrite($fp, date("Y ...

  7. 操作系统定期定时执行python脚本

    1. Windows 控制面板 --> 管理工具 -->任务计划程序 --> 创建任务 接下来就是设置执行的时机以及脚本路径等 1>>常规 设置任务名称描述,以及是否执行 ...

  8. SpringBoot中使用@scheduled定时执行任务需要注意的坑

    spring boot: 计划任务@ EnableScheduling和@Scheduled @Scheduled中的参数说明 @Scheduled(fixedRate=2000):上一次开始执行时间 ...

  9. 定时执行任务-springboot

    定时执行任务-springboot 先看两个接口 这两个接口springboot已经帮我们封装好了,我们不需要去手动使用 TaskScheduler //任务调度者 TaskExecutor //任务 ...

随机推荐

  1. 小白的git克隆流程clone

    首先你进去你要存放代码的位置,比如将代码存放到D盘,然后在D盘中右键,点击Git Bash Here,就是说本地仓库要在D盘建立. 然后出现git 命令行界面,然后输入命令:git clone + 远 ...

  2. justify-content

    CSS3弹性布局内容对齐(justify-content)属性使用详解 内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐. 该操作 ...

  3. mysqladmin processlist; show processlist/status/open tables/engine/variables/table status/columns/grants/index/privileges/innodb status/logs/warnings/////; 结果筛选

    mysqladmin showprocesslist可查看完整sql需要权限. SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此 ...

  4. mysql的my.cnf参数详解

    转载[Mysql] MySQL配置文件my.cnf的理解 一.缘由 最近要接手数据库的维护工作,公司首选MySQL.对于MySQL的理解,我认为很多性能优化工作.主从主主复制都是在调整参数,来适应不同 ...

  5. 状压dp(8.8上午)

    神马是状态压缩? 就是当普通dp的每一维表示的状态非常少的时候,可以压缩成一维来表示 如果m==8 dp[i][0/1][0/1]......[0/1] 压缩一下 dp[i][s]表示到了第i行,状态 ...

  6. iView 实战系列教程(21课时)_4.iView 实战教程之布局篇(二)

    https://github.com/iview/iview 下载iview的代码 Layout布局大概的样子 Iview的源代码.Layout 组件比较简单,,里面一个slot Sider是最复杂的 ...

  7. Java 基础-基本数据类型与表达式

    基本数据类型 基本概念 标识符 标识符与内存中的某个位置对应,Java 中标识符的规范如下: 必须由大小写字母.下划线.美元符号.数字组成 首字母只能是大小写字母.下划线.美元符号 变量 变量的值可以 ...

  8. MVC 源码系列之控制器激活(一)

    Controller的激活 上篇说到Route的使用,GetRoute的方法里面获得RouteData.然后通过一些判断,将最后的RouteData中的RouteHandler添加到context.R ...

  9. 【ABAP系列】SAP 业务界面同时显示KEY和文本

      公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 业务界面同时显示KEY和 ...

  10. Appscan工作原理详解

    AppScan,即 AppScan standard edition.其安装在 Windows 操作系统上,可以对网站等 Web 应用进行自动化的应用安全扫描和测试. Rational AppScan ...