简介
- 同步:任务按先后步骤执行,一般就按代码从上到下执行,前面的任务不完成就不会执行后面的任务
- 异步:不按步骤执行,执行快的不等待执行慢的,能先完成就先完成
样例
一般步骤
- 在main方法上
@EnableAsync,开启异步
- 在需要异步的方法上面,
@Async,告诉spring这个方法是异步方法
- 其他方法就不会管被
@Async标记的方法是否完成,
代码
@Service
public class HelloAsyn {
@Async
public void asyn(){
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Controller
public class MyController {
@Autowired
HelloAsyn helloAsyn;
@GetMapping("/h")
@ResponseBody
public String a(){
helloAsyn.asyn();
return "asynchronous";
}
}
@EnableAsync
@SpringBootApplication
public class SpringBootAsynchronousApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAsynchronousApplication.class, args);
}
}

简单邮件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.4.4</version>
</dependency>
spring.mail.username=2585@qq.com
#自己的QQ账户
spring.mail.password=ffjkxcqamcriebie
# 密码从qq邮箱,设置->账户里面的SMTP服务的授权码
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true
@SpringBootTest
class SpringBootMailApplicationTests {
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo("yangyanhua32@gmail.com");
mailMessage.setFrom("2585290270@qq.com");
mailMessage.setSubject("来自spring boot的邮件");
mailMessage.setText("spring boot 真不错,赶紧学");
mailSender.send(mailMessage);
}
}
定时任务
步骤:
- 在程序入口,也就是main方法注解
@EnableScheduling
- 在
@Scheduled(cron ="" )
代码
@EnableScheduling
@SpringBootApplication
public class SpringBootMailApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMailApplication.class, args);
}
}
@Service
public class ScheduledService {
@Scheduled(cron ="0/2 * * * * ?" )
public void scheduled(){
System.out.println("定时任务,请勿回复");
}
}