1. 什么是异步?
首先我们先来看看一个同步的用户注册例子,流程如下:
在同步操作中,我们执行到插入数据库的时候,我们必须等待这个方法彻底执行完才能执行“发送短信”这个操作,如果插入数据库这个动作执行时间较长,发送短信需要等待,这就是典型的同步场景。
于是聪明的人们开始思考,如果两者关联性不强,能不能将一些非核心业务从主流程中剥离出来,于是有了异步编程雏形,改进后的流程如下:
这就是异步编程,它是程序并发运行的一种手段,它允许多个事件同时发生,当程序调用需要长时间运行的方法时,它不会阻塞当前的执行流程,程序可以继续运行。
在聊完异步编程后,那么我们一起来看看Java里面实现异步编程究竟有哪些方式呢?
2. 线程异步
在 Java 语言中最简单使用异步编程的方式就是创建一个 线程来实现,如果你使用的 JDK 版本是 8 以上的话,可以使用 Lambda 表达式 会更加简洁。
public class AsyncThread extends Thread{
@Override
public void run() {
System.out.println("当前线程名称:" + this.getName() + ", 执行线程名称:" + Thread.currentThread().getName() + "-hello");
}
}
public static void main(String[] args) {
// 模拟业务流程
// .......
// 创建异步线程
AsyncThread asyncThread = new AsyncThread();
// 启动异