随笔分类 - Java NIO
摘要:在JDK5U9之后,NIO在Linux 内核版本大于2.6的服务器上支持了epoll。其对并发的处理会有大幅度的性能提升,JVM启动参数如下: 1 -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider 在t
阅读全文
摘要:NIO socket是非阻塞的通讯模式,与IO阻塞式的通讯不同点在于NIO的数据要通过channel放到一个缓存池ByteBuffer中,然后再从这个缓冲池中读出数据,而IO的模式是直接从inputstream中read。所以对于NIO,由于存在缓冲池的大小限制和网速的不均匀会造成一次读的操作放入缓
阅读全文
摘要:前言 java通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理文件读写,不过java nio中引入了一种基于MappedByteBuffer操作大文件的方式,其读写性能极高。MappedByteBuffer引入了内存映射文件的方法,该方案是建立的操作系
阅读全文
摘要:Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。 打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使
阅读全文
摘要:缓冲区简介 操作系统有用户空间与系统空间的概念,JVM对应的JAVA进程是位于用户空间的,处于该空间的进程不能直接访问硬件设备,当JAVA进程要进行I/O操作时,只能通过系统调用将控制权交给内核,内核准备好进程所需要的数据,将这些数据拷贝到用户空间缓冲区(如下图所示)。 Java NIO中的Buff
阅读全文
摘要:通过上一篇对JAVA NIO的源码分析,对一些重要的代码实现进行了探究,现将从源码分析中得出的结论总结如下。 一、源码分析流程梳理。 1.Selector.open() 获取选择器的时候,根据不同的操作系统创建Selector实现类,实现类创建了用于保存通道句柄和事件类型的数据结构PollArray
阅读全文
摘要:1.前言 JDK1.4之前的传统阻塞IO(BIO),服务端需要为每一个客户端连接创建单独的线程为其服务,从JDK1.4开始NIO非阻塞式IO出现,它只需要单独的一个线程就能接收多个客户端请求,而真正处理各个请求的细节可以使用多线程的方式高效率的完成,这些处理线程与具体的业务逻辑分离,做到了IO的复用
阅读全文
摘要:传统IO有两种形式,一种是阻塞IO,另一种是阻塞IO+每个请求创建线程/线程池。 阻塞IO IO的阻塞、非阻塞主要表现在一个IO操作过程中,如果有些操作很慢,比如读操作时需要准备数据,那么当前IO进程是否等待操作完成,还是得知暂时不能操作后先去做别的事情?一直等待下去,什么事也不做直到完成,这就是阻
阅读全文
摘要:1、网络进程通信之socket 在使用TCP/IP协议族进行网络通信的过程中,网络层的IP地址可以唯一标识一台网络主机,而传输层的协议+端口可以唯一标识主机中的应用程序进程,利用这样的三元组合(IP地址,协议,端口)就可以在网络中唯一标识网络中的进程,从而为进程在网络中的通信建立了基石。 TCP/I
阅读全文

浙公网安备 33010602011771号