努力奔跑中的coder

源代码的github地址:https://github.com/louyuting

Java的NIO与IO的区别

NIO是JDK1.4引入的异步IO,NIO核心部分就是三点: Channel Buffer Selector NIO与IO对比NIO与IO的区别,总体上来说体现在三个方面: IO 基于流(Stream oriented), 而 NIO 基于 Buffer (Buffer oriented) IO ...

2017-03-07 15:04:24

阅读数:430

评论数:0

《Java源码解析》之NIO的Selector机制(Part3:Selector.select())

Selector.select()函数的分析:前面已经介绍过了Selector的open函数以及channel的register函数,现在分析最后一个函数:select()函数。selector.select()在Selector类中此方法是一个抽象的。如下: public abstract i...

2016-12-07 18:03:40

阅读数:1951

评论数:0

《Java源码解析》之NIO的Selector机制(Part2:SelectableChannel.register(Selector sel, int ops))

通过上一篇博客,我们知道了Selector机制中的open()函数做了什么,其实也就是创建了一个管道,并把pipe的读写文件描述符放入pollArray中,这个pollArray是Selector的枢纽。下面我们抓取源码看一下channel在selector中注册时做了什么? Selectabl...

2016-12-06 14:43:09

阅读数:1530

评论数:0

《Java源码解析》之NIO的Selector机制(Part1:Selector.open())

Selector机制之Selector.open()函数的解析在NIO中我们一般都是Channel与Selector配合使用的,一般情况下使用的方法如下://打开Selector来处理channel Selector selector = Selector.open(); //将channel注册...

2016-12-05 13:29:57

阅读数:4059

评论数:0

Java的NIO之Selectors的使用

就前面的知识来说,对于一般的NIO应用足够了,那为什么推出Selector呢?Selectors(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程就可以管理多个channel,从而管理多个网络连接。这样单线程就可以实现对于...

2016-12-05 13:28:07

阅读数:742

评论数:0

Java的NIO之用于UDP的DatagramChannel

Java NIO中的DatagramChannel是一个能 收发 UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。10.1 打开 DatagramChannel下面是打开DatagramChannel的方式:DatagramChannel c...

2016-12-05 13:25:25

阅读数:423

评论数:0

Java的NIO之服务端的ServerSocketChannel的使用

ServerSocketChannelJava的NIO中的ServerSocketChannel是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。所以不难想象ServerSocketChannel是运行在服务端的。ServerSocketChannel类在ja...

2016-12-05 13:24:49

阅读数:362

评论数:0

Java的NIO之网络通信的SocketChannel

Java的NIO中的SocketChannel是一个连接到TCP网络套接字的通道(SocketChannel这个通道一般用于客户端,服务端一般使用ServerSocketChannel)。可以通过以下2种方式创建SocketChannel: 1. 打开一个SocketChannel并连接到互联网...

2016-12-05 13:24:09

阅读数:333

评论数:0

Java的NIO之FileChannel

FileChannel文件通道Java的NIO中的FileChannel是一个连接到文件的通道,文件可以通过这个通道来进行读写操作。值得注意的是:FileChannel无法设置成非阻塞模式,它总是工作在阻塞模式下。下面介绍一下FileChannel的用法:7.1 打开一个FileChannel在使...

2016-12-05 13:22:52

阅读数:739

评论数:0

Java的NIO之不同channel之间传输数据

5.不同通道channel之间传输数据在Java的NIO中,如果两个通道中有一个是FileChannel,那么我们可以直接将数据从一个channel传输到另外一个channel中。两个通道之间传输数据的方式有两种,分别是: - transferFrom() - transferTo()5.1 ...

2016-12-05 13:21:31

阅读数:556

评论数:0

Java的NIO之Scatter和Gather

Java的NIO开始支持scatter/gather,scatter/gather用于描述从channel中读取数据或则写入数据到channel的操作: 分散(scatter) 从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取...

2016-12-05 13:20:32

阅读数:380

评论数:2

《Java源码解析》NIO中Buffer缓冲区的实现

Buffer 缓冲区Java的NIO中Buffer至关重要:buffer是读写的中介,主要和NIO的通道交互。数据是通过通道读入缓冲区和从缓冲区写入通道的。其实缓冲区buffer的本质就是一块可以读写的内存块。这块内存块被包装成NIO的Buffer对象,并提供了一组方法方便读写。3.1 Buffe...

2016-12-05 13:18:07

阅读数:1371

评论数:0

《Java源码解析》NIO中的heap Buffer和direct Buffer区别

heap buffer 和 direct buffer区别在Java的NIO中,我们一般采用ByteBuffer缓冲区来传输数据,一般情况下我们创建Buffer对象是通过ByteBuffer的两个静态方法:ByteBuffer.allocate(int capacity); ByteBuffer....

2016-12-05 13:05:36

阅读数:3278

评论数:0

Java的NIO之Channel通道

1.Channel 通道的简介java的NIO的通道类似流,但是又有一些不同: - 既可以从Channel中读数据也可以往Channel里面写数据;但是流的读写一般是单向的。 - Channel可以异步的读写; - Channel的读写是通过Buffer这个中介实现的。数据总是要先读到一个B...

2016-12-05 13:00:42

阅读数:647

评论数:0

Java的NIO概述

NIO的核心组成部分 Channel Buffers Selectors 1. Channel和Buffer基本上,所有的IO在NIO中都从一个Channel开始。Channel有点象流。数据可以从Channel读到Buffer中,也可以从Buffer写到Channel中。这里有个图示: Cha...

2016-12-05 12:58:59

阅读数:290

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭