[b]异步[/b]
目前的异步执行不管是js还是java,都并不是真正的异步。或是基于队列的方式,或是基于事件的方法,他都没有在同一时间同时执行2条或多条代码。异步并行编程目前并没有成为主流。
[b]NIO[/b]
1、NIO 的创建目的是为了将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。
2、他是基于事件的异步调用方法。通道是双向的,客户端和服务端通过轮询获取事件状态,而不是一只占用线程等待。如果事件已经被处理完成就操作数据。
在这里通道中的selector就起到线程池的一种功能。
[img]http://dl2.iteye.com/upload/attachment/0106/9368/dbb95ee1-5fa4-3503-b008-897c91de152f.jpg[/img]
[b]NodeJs[/b]
NodeJs在异步请求的时候,也是使用的典型的异步调用方法。图解如下:
[img]http://dl2.iteye.com/upload/attachment/0106/9361/355d203c-d575-3bc9-8045-42ed06c54f44.jpg[/img]
[b]总结[/b]
所谓基于事件的异步机制,其实很简单,就是将操作设置完回调函数(或设置对象运行状态)后放入线程池,轮询线程池完成操作,设置回调函数(或改变状态)到观察者,轮询观察者返回结果。总之,通过不同的线程池执行代码,操作完后调用回调函数。
目前的异步执行不管是js还是java,都并不是真正的异步。或是基于队列的方式,或是基于事件的方法,他都没有在同一时间同时执行2条或多条代码。异步并行编程目前并没有成为主流。
[b]NIO[/b]
1、NIO 的创建目的是为了将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地提高速度。
2、他是基于事件的异步调用方法。通道是双向的,客户端和服务端通过轮询获取事件状态,而不是一只占用线程等待。如果事件已经被处理完成就操作数据。
在这里通道中的selector就起到线程池的一种功能。
[img]http://dl2.iteye.com/upload/attachment/0106/9368/dbb95ee1-5fa4-3503-b008-897c91de152f.jpg[/img]
[b]NodeJs[/b]
NodeJs在异步请求的时候,也是使用的典型的异步调用方法。图解如下:
[img]http://dl2.iteye.com/upload/attachment/0106/9361/355d203c-d575-3bc9-8045-42ed06c54f44.jpg[/img]
[b]总结[/b]
所谓基于事件的异步机制,其实很简单,就是将操作设置完回调函数(或设置对象运行状态)后放入线程池,轮询线程池完成操作,设置回调函数(或改变状态)到观察者,轮询观察者返回结果。总之,通过不同的线程池执行代码,操作完后调用回调函数。