Node的异步与java的异步_[node.js]-异步和同步、阻塞和非阻塞

异步和同步、阻塞和非阻塞

主要分为以下几类组合:

同步阻塞

异步阻塞

同步非阻塞

异步非阻塞

f7df054f629e2241370d398831532fdf.png

假设调用方为小明,被调用方为小红 图1:小明喜欢小红,小明于是乎决定给小红打电话表白,小红接电话,如果此时小红把电话晾在那,小明则有两种状态,一种是阻塞、一种是非阻塞,阻塞就是小红晾电话的同时,小明还在等着,叫做阻塞,非阻塞就是小红晾电话的同时,小明可以去干别的事情,叫做非阻塞,小红接电话后说,我要想一想再给你答复,此时如果没挂掉电话,那么是在同步,如果挂掉电话一会再告诉小明,那么就会是异步。

图2:当小红接电话后,说想一想,一会再告诉你结果,然后把电话挂了,此时属于异步,然后小明如果还在痴情地等待电话回复(即2.1),那么称为阻塞,如果小明此时并不是干等这个答复,而是打电话向另外一个妹子表白(即2.2),那么称为非阻塞,结合起来就是异步堵塞或异步非堵塞。

图3:当小红接电话后,说想一想,一会再告诉你结果,然后电话也不挂,一直通话,此时属于同步,但是小明此时偷偷向另外一个妹子打电话表白,这个行为属于非堵塞,结合起来就是同步非阻塞。

队列和栈

队列的特点: 先进先出,如数组,依次往后添加;

ef933c24849fbdbbac8c17a93f7d943e.png

栈的特点: 先进后出

首先我们往栈里面分别放1、2、3, 然后取出时,是按照3、2、1取出;

function a() {

function b() {

function c() {

}

c()

}

b()

}

a()

// 这个代码中,我们是依次执行了a函数、b函数、c函数

// 但是在销毁的时候,是先从c函数销毁,然后再销毁b函数

// 最后销毁a函数,如果是先销毁a函数的话,那么b就会失去了其执行栈

// 也就是执行上下文,所以在执行栈中,是先进后出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值