猿问

同步异步、阻塞非阻塞

有关同步异步、阻塞非阻塞的理解,看了很多博客不清楚以下的概括对否,请各位大佬帮忙看看。

同步与异步:
主要阐述任务之间的依赖关系,假设任务A调用任务B,任务A需要等待任务B的完成才能继续执行,这叫同步,而如果任务A调用任务B后立马返回结果,并且在B执行完后会主动通知A,此时成为异步。

阻塞与非阻塞:
主要阐述任务与CPU资源的关系,假设任务A调用任务B,任务A需要等待任务B的完成才能继续执行,此时CPU也还保持任务A所在线程一直等待,这叫阻塞;而如果CPU此时挂起任务A所在线程去执行其他线程,时不时回来询问A是否阻塞完毕,完毕才有可能执行线程A,这叫非阻塞

不知道这样理解有没有偏差,希望各位指点一下

鸿蒙传说
浏览 501回答 2
2回答

繁花如伊

没有问题,同步与异步关注的是消息通信机制,所谓同步,就是在调用者发出一个“调用”,在得到返回结果之前,该“调用”就不返回,一旦调用返回,就是得到了结果。异步是指调用者在发出“调用”之后,不必等到调用结果就可以直接返回。得到调用结果后由被调用者通知调用者 阻塞与非阻塞关注的是程序在等待调用结果时的状态。阻塞调用是指调用者在结果返回之前,当前线程会被挂起,会一直等到结果的返回。非阻塞调用值在不能立刻得到结果时,不阻塞当前进程。
随时随地看视频慕课网APP

相关分类

Java
我要回答