同步异步阻塞非阻塞的理解

同步:

调用一个do()的方法然后打印结果print(),当执行完do这个方法,执行完后再打印结果,这个可以理解为同步,也就是顺其自然,循规蹈矩。

异步:

用ajax向服务器发送一个请求,服务器还没有响应(没有返回),我们的程序可以不管而继续往下执行,这就是异步。

阻塞:

当我们线程需要连接到公司的打印机进行文件打印,但该打印机却被另外一线程占用,这个时候我们的线程就是阻塞,只能等另外一个线程释放掉,我们才可以连接打印。

同步阻塞IO:

是指我们向系统请求读某个文件(或者网络IO)时,系统内核需要等待数据准备完毕,才把数据从内核缓存写入到进程,这个过程,线程进入阻塞队列,待数据准备完毕。

非阻塞:

线程向系统请求读(网络IO)操作时,只发出指令,不需要进入阻塞队列等待数据准备完毕,而是通过轮循去看系统内核是否准备数据完毕,或者内系统内核完成后通知线程,这就是非阻塞。

 

同步与阻塞:最大的区别在于,同步的时候线程还是激活运行状态的,但阻塞的话,线程是进入阻塞队列被挂起。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>