NIO.2

NIO.2特性总结(一)灵活的Path

天涯浪子 提交于 2019-12-09 13:02:55
NIO.2 , More New I/O APIs for the Java Platform 。 技术发展实在太快, NIO 都没弄透, java7 中的 NIO2 又要开始进入我们的程序,优化系统的性能了。最近在看《 PRO Java 7 NIO.2 》 CSDN 上有下载,不用积分,好像只有英文版的,顺便做点儿笔记。 我先整体介绍下java7在NIO上做的一些改动。其实我找了官网的更新文件,但上面并没有说的很清楚,我就从书上给出的目录大致列一下,这里只说NIO的变化,其他的变化,我记得有本书叫java7新特性吧,以前InfoQ上看过。 NIO.2主要还是在NIO.1的基础上对文件系统和socket操作功能进行了增强。首先在增强对文件系统操作部分,增加了java.nio.file类,这部分在API内这样描述Defines interfaces and classes for the Java virtual machine to access files, file attributes, and file systems。这里有我今天要说的主管路径的Path类,有连接文件系统的FileSystem类等,与之相关的还有java.nio.file.attribute包下的内容。这里有对文件系统view的描述和操作。这部分可以归结为: l Path Operations l

NIO.2特性总结(二)增强的通道 NetworkChannel

半世苍凉 提交于 2019-12-07 20:57:29
接上一篇 <NIO.2特性总结(一)灵活的Path> 想了想还是先把 NIO.2 的 socket 部分先看了,毕竟这部分对我更有用,而且昨儿看了目录,对于文件系统的操作部分总体还比较简单,所以在后面再补上,今天先记点儿有关 NIO2 socket 部分。 在NIO1中,我们主要用到的有这个三类channel:ServerSocketChannel,SocketChannel和DatagramChannel,以及NIO的核心选择器Selecotr。通过这些类的组合就能写出高性能的、非阻塞IO程序,NIO1强调的是非阻塞Non-blocking,当然非阻塞并不仅仅指selector这样的轮询可以一下处理好多请求,这部分的内容可以看我博客的相关文章或者直接看《Reilly - Java NIO》。而NIO.2提出的是异步,异步加非阻塞,就是我们熟悉的AIO。虽然NIO1也能通过其他办法实现异步,比如mina中利用将操作分离,用队列并伴随wait和notify来实现异步,但NIO2给我们提供直接的接口来实现异步,会降低很多开发难度。还是要再提一下异步和非阻塞是没有什么关系的,书上有一段话很好: 当然 NIO.2 也加强了 NIO1 中对 channel 的操作。下面我们看具体的。先总结一下 NIO2 对 channel 上的增强。首先是新增的接口 NetworkChannel ,我们先看

NIO.2特性总结(三)AIO

家住魔仙堡 提交于 2019-12-07 11:32:38
接上一篇 《 NIO.2特性总结(二)增强的通道 NetworkChannel 》 We’ve finally reached the most powerful feature introduced in NIO.2, the asynchronous channel API. 我觉得第一个问题就是同步和异步的区别,The Difference Between Synchronous And Asynchronous。异步IO有时候也会叫overlapped I/O。这里别跟阻塞和非阻塞混淆了。我们这节主要说的是异步的问题,如果你不了解阻塞和非阻塞,你可以看之前的文章,再罗嗦一点,异步和非阻塞不是一个东西。 同步I/O操作:In a synchronous I/O operation, a thread enters into action and waits until the I/O request is completed (the program is “stuck” waiting for the process to end, with no way out)。其实看这段我特别别扭,怎么看怎么像阻塞的解释。不过我在网上查到了这么一段话:阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO,前四种都属于同步IO。这么一看好像还是那么一回事儿。具体我还得去核实一下。