同步异步阻塞非阻塞

同步:在发出一个功能调用时,在没有得到结果之前,该调用就不返回。必须一件事一件事的做,前一件事做完了才能继续做下一件事。

异步:在发出一个功能调用时,调用者不能立即得到结果。实际处理这个调用的部件在完成后,通过状态、通知或者回调函数来通知客户端。

阻塞:在调用结果返回之前,当前线程被挂起,函数得到结果之后才返回。

非阻塞:在不能立即得到结果之前,该函数不会阻塞当前线程,而会立即返回。

注意:

同步和异步是指Client端访问数据的机制。同步一般指主动请求并等待IO操作完毕的方式,当数据就绪后在读写的时候必须阻塞。异步是指主动请求数据后便可以处理其他任务,随后等待IO操作完毕的通知。

同步和异步主要侧重于访问数据的方式。同步需要主动读取数据,在读写数据的过程中还是会阻塞。异步只需要IO操作完成的通知,并不主动读写数据,由操作系统内核完成数据的读写。

阻塞和非阻塞是Server端访问的数据如果没有就绪,进程需要等待。简单说相当于函数内部的实现区别,也就是未就绪时是直接返回还是等待就绪。

阻塞和同步的区别:对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。阻塞是当前线程被挂起。

一个完整的I/O的两个阶段:

①查看数据是否就绪,即内核等待数据可读

②进行数据拷贝,即内核将数据拷贝到用户线程

同步IO和异步IO的区别:数据拷贝的时候进程是否阻塞,即数据拷贝是由用户线程完成还是内核完成。

阻塞IO和非阻塞IO的区别:反映在IO操作的第一个阶段,查看数据是如何处理的。

                                                                                                                                                                                                                                      

你可能感兴趣的:(Java)