Java-NIO
NobiGo
这个作者很懒,什么都没留下…
展开
-
Java NIO 系列教程(一)
概述Java NIO是面向缓冲区的,基于通道的IO操作。缓冲区与通道的基本原理叙述通道:类似于生活中的铁路,只用于连接,并没有数据的传输。缓冲区:类似于火车,可以双向的传递数据,比如说:运城到太原的火车,在运城上乘客后(乘客数量小于火车容量)(可以认为就是在写数据),就可以往太原出发,(当然也可以在中途进行上下车)在太原后,乘客需要下车(类似于读数据),重要的是这个火车在太原可以再次进行装人(写数据原创 2017-02-28 20:49:12 · 471 阅读 · 0 评论 -
Java NIO 系列教程(二)
直接缓冲区与非直接缓冲区非直接缓冲区:通过allocate()方法分配缓冲区,将缓冲区建立在Jvm内存中。可以观察到非直接缓冲区需要在内核地址空间(OS)和用户地址空间之间(JVM)之间进行数据复制的操作,将缓冲区建立在物理内存中的可以免除中间的复制操作,提高效率因此产生了直接缓冲区。直接缓冲区:通过allocateDirect()工厂方法来创建。此方法的缓冲区进行分配和取消分配所需的成本通常原创 2017-03-02 10:19:16 · 503 阅读 · 0 评论 -
Java NIO 系列教程(三)
分散读取和聚集写入分散读取:就是将通道中的数据分散读取到多个缓冲区中聚集写入:就是将多个缓冲区中的数据聚集写入到通道中 分散读取具体实现:private static void test2() { RandomAccessFile ras = null; try { ras = new RandomAccessFile("doc", "rw");原创 2017-03-02 20:57:56 · 340 阅读 · 0 评论 -
Java NIO 系列教程(四)
阻塞式与非阻塞式(主要针对网络编程而言)阻塞式: 比如到你某个时候到A楼一层(假如是内核缓冲区)取快递,但是你不知道快递什么时候过来,你又不能干别的事,只能死等着。非阻塞式: 还是等快递的例子:你知道今天要来快递,等快递员给你打电话,在快递员打电话之前你可以忙自己的事情,等接到电话后再过去取,这就是非阻塞式的。为进一步提高IO的效率,使用了多线程来解决这个问题,但是线程的数量总是会因为CP原创 2017-03-02 20:58:52 · 350 阅读 · 0 评论