异步和阻塞在我们的学习java的JUC时会听到,那么他两的区别是啥了。这里我给出现阶段我自己的理解。
事:删除学生信息、查看学生列表
人:线程
异步、同步:一件事、多个人,如何工作
阻塞、非阻塞:多件事、一个人,如何工作
文章核心
1.异步同步:对于一件事、多个人协作时,是否可以共同进行,可以共同进行就是异步,不可以共同进行就是按序进行就是同步
2.阻塞和非阻塞:对于多件事、一个人,一个人在做A事被某个问题卡住后,是否可以转换做B事,如果可以做B事,则是非阻塞的。若不能再去做B事,就是阻塞
异步
1.场景
①前端请求后台时,通过ajax请求,我们会听到,这是个异步请求
同步请求:请求发出后,浏览器卡死,不可做任何事情
异步请求:请求发出后,浏览器正常使用
②在后端SpringBoot也为我们配置了一个注解,异步方法,添加注解的方法就是异步的。
同步方法:controller中调用同步service层方法(正常的方法)调用代码之后的代码,是在调用Service层放回结果后执行。
异步方法:service未放回结果,controller层的代码就已经执行完毕了
2.总结
我们可以将前端和后台看作成两个人,
将Controller和Service看成两个人,
同步:两个人同时做一件事情,A必须等B完成某件事情后才可以开始做自己的事情
异步:AB各自做各自的事情,你做你的事情,我做我的事情
阻塞
1.就说一句话
阻塞是说线程阻塞,针对的是一个线程。
文章核心
1.异步同步:对于一件事多个协作时,是否可以共同进行,可以共同进行就是异步,不可以共同进行就是按序进行就是同步
2.阻塞和非阻塞:对于多件事、一个人,一个人在做A事被某个问题卡住后,是否可以转换做B事,如果可以做B事,则是非阻塞的。若不能再去做B事,就是阻塞