目录
2、基于ScheduledExecutorService 的定时任务
1、基于Timer的定时任务
1.1介绍
在JDK1.5之前使用的都是 Timer来完成定时任务, 特点是 单线程执行定时任务,因此存在以下问题:
- 多任务之间相互影响(只要有一个没有捕获的异常出现,其它任务便会自动终止运行)
- 多任务的执行是串行的,效率低
1.2例子
使用 PostMan 发送POST 请求:localhost:8888/ruoyi/login ,请求参数: 用户名、密码、验证码、uuid
Controller 层接收请求,并调用 service 层处理请求
sercie 层启动两个定时任务
一个任务是 延迟3秒打印 用户名、密码、验证码和uuid 和线程名
另一个任务是 延迟1秒,每间隔1秒打印 当前时间 和线程名
1.3 前端请求
1.4 Controller 层
package com.ruoyi.project.system.controller;
/**
* 登录验证
*
* @author ruoyi
*/
@RestController
public class SysLoginController {
@Resource
private SysLoginService loginService;
@PostMapping("/login")
public AjaxResult login(String username, String password, String code, String uuid) {
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.login(username, password, code, uuid);
ajax.put(Constants.TOKEN, token);
return ajax;
}
}
1.5 Service 层
1.6 结果
<