
Java NIO
文章平均质量分 87
iteye_9421
这个作者很懒,什么都没留下…
展开
-
Java传统IO
传统IO有两种形式,一种是阻塞IO,另一种是阻塞IO+每个请求创建线程/线程池。阻塞IOIO的阻塞、非阻塞主要表现在一个IO操作过程中,如果有些操作很慢,比如读操作时需要准备数据,那么当前IO进程是否等待操作完成,还是得知暂时不能操作后先去做别的事情?一直等待下去,什么事也不做直到完成,这就是阻塞。抽空做些别的事情,这是非阻塞。在传统IO里,InputStream.read()方法...原创 2016-09-11 20:58:24 · 226 阅读 · 0 评论 -
Java NIO源码分析
1.前言JDK1.4之前的传统阻塞IO(BIO),服务端需要为每一个客户端连接创建单独的线程为其服务,从JDK1.4开始NIO非阻塞式IO出现,它只需要单独的一个线程就能接收多个客户端请求,而真正处理各个请求的细节可以使用多线程的方式高效率的完成,这些处理线程与具体的业务逻辑分离,做到了IO的复用。 2.源码分析首先以一段典型的NIO使用代码开始: Selector s...原创 2016-10-04 20:40:42 · 478 阅读 · 0 评论 -
JAVA NIO源码分析---总结篇
通过上一篇对JAVA NIO的源码分析,对一些重要的代码实现进行了探究,现将从源码分析中得出的结论总结如下。一、源码分析流程梳理。1.Selector.open() 获取选择器的时候,根据不同的操作系统创建Selector实现类,实现类创建了用于保存通道句柄和事件类型的数据结构PollArrayWrapper,如果是Windows系统将会创建一对相互连接的socket通道模拟管道用于唤...原创 2016-10-05 21:41:20 · 238 阅读 · 0 评论 -
Java NIO Buffer缓冲区
缓冲区简介操作系统有用户空间与系统空间的概念,JVM对应的JAVA进程是位于用户空间的,处于该空间的进程不能直接访问硬件设备,当JAVA进程要进行I/O操作时,只能通过系统调用将控制权交给内核,内核准备好进程所需要的数据,将这些数据拷贝到用户空间缓冲区(如下图所示)。Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。...原创 2016-10-08 14:12:12 · 184 阅读 · 0 评论 -
Java NIO FileChannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStream或RandomAccessFil...原创 2016-10-08 14:18:39 · 120 阅读 · 0 评论 -
Java NIO MappedByteBuffer
前言java通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理文件读写,不过java nio中引入了一种基于MappedByteBuffer操作大文件的方式,其读写性能极高。MappedByteBuffer引入了内存映射文件的方法,该方案是建立的操作系统的内存管理机制上的。 操作系统的内存管理机制操作系统的内存分为:物理内存与进程虚...原创 2016-10-13 22:50:26 · 348 阅读 · 0 评论 -
Java NIO 处理粘包、断包问题
NIO socket是非阻塞的通讯模式,与IO阻塞式的通讯不同点在于NIO的数据要通过channel放到一个缓存池ByteBuffer中,然后再从这个缓冲池中读出数据,而IO的模式是直接从inputstream中read。所以对于NIO,由于存在缓冲池的大小限制和网速的不均匀会造成一次读的操作放入缓存池中的数据不完整,便形成了断包问题。同理,如果一次性读入两个及两个以上的数据,则无法分辨两个数...原创 2017-03-12 20:59:25 · 1108 阅读 · 0 评论 -
Java NIO - Epoll(转)
在JDK5U9之后,NIO在Linux 内核版本大于2.6的服务器上支持了epoll。其对并发的处理会有大幅度的性能提升,JVM启动参数如下:-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider 在tomcat中启用的办法是在 catalina.sh 的开头加入下面这一行:CATAL...原创 2017-03-12 22:57:21 · 660 阅读 · 0 评论