NIO两个特色:
第一非阻塞;第二 块传输。
但是SUN公司向外宣传的只是强调非阻塞,原因是块传输不是一个受到保证的特性。
NIO下面都是通过JNI来实现的,都是非托管代码,不属于规范,也就是说具体的JAVA实现各不相同。所以块传输的方式手段也个不相同。因此无法保证。代码虽然仍然是在虚拟机里面运行的,可是完全以各本地代码的编译器决定,这样的代码完全不受托管。
第二个内存空间。块传输的本地代码可能使用系统调用取得内核空间,然后在内核空间中分配这个内存并且使用DMA直接存取这片内存不通过CPU。这就WILD了。
这就是为什么叫NIO的原因了。只能这么叫,不能叫别的因为SUN自己也不知道它是什么样子。SUN意思是:我只知道它是新的,至于其它我都不知道。你们去问实现商吧。