转http://iteches.com/archives/65193Netty4带来一个与众不同的特点是其ByteBuf的重现实现,老实说,java.nio.ByteBuf是我用得很不爽的一个API,相比之下,通过维护两个独立的读写指针,io.netty.buffer.ByteBuf要简单不少,也会...
分类:
Web程序 时间:
2015-01-27 21:49:51
阅读次数:
284
参考文章:http://weixiaolu.iteye.com/blog/1479656http://developer.51cto.com/art/201112/307463.htmNIO服务端package com.meso.nio;import java.io.IOException;impo...
分类:
编程语言 时间:
2015-01-24 14:18:28
阅读次数:
159
NIO(同步非阻塞IO)是jdk1.4之后推出的newio,它跟BIO(同步阻塞IO)有着非常明显的区别。BIO在调用read/write的时候会阻塞线程,也就是就算某个时刻你的socket并没有数据需要传输,但是你的socket线程却仍然会被阻塞在read/write方法上,所以BIO是一个soc...
分类:
编程语言 时间:
2015-01-18 18:27:25
阅读次数:
265
最近大概看了ZooKeeper和Mina的源码发现都是用Java NIO实现的,所以有必要搞清楚什么是NIO。
BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
NIO:同步非阻塞式IO,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都...
分类:
其他好文 时间:
2015-01-11 23:02:52
阅读次数:
516
當使用 java NIO 來讀寫檔案或 socket 時,一定會用到 ByteBuffer,大部份的人一開始會被它提供的許多 method 搞得很混亂,像是 flip、compact,甚至會質疑為什麼是提供這些 method ? 還有,ByteBuffer 中的三個指標 position、limit...
分类:
其他好文 时间:
2015-01-10 13:46:25
阅读次数:
228
有时候我们需要知道一些类的用法,但又不知道去哪儿找到使用的例子,又或者这个例子比较难找,我们懒得去找,那么现在推荐一个网站来帮助我们。
网站URL如下:
http://www.programcreek.com/java-api-examples/
我们可以输入一个类的全限定名,或者这个类部分的名字。例如搜索"java.nio.channels.FileChannel"或者"FileC...
分类:
编程语言 时间:
2015-01-08 11:18:01
阅读次数:
458
package?chapter1;
import?java.io.File;
import?java.io.IOException;
import?java.nio.file.LinkOption;
import?java.nio.file.Path;
import?java.nio.file.Paths;
/**
?*?定义Path?对象
?*?
?...
分类:
编程语言 时间:
2015-01-07 17:02:01
阅读次数:
225
SocketChannel
Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:
打开一个SocketChannel并连接到互联网上的某台服务器。一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。
打开 SocketChannel
下面是So...
分类:
编程语言 时间:
2015-01-05 16:43:06
阅读次数:
146
Selector
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。
为什么使用Selector?
仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通道。对于操作系统来说,线程之...
分类:
编程语言 时间:
2015-01-05 16:42:24
阅读次数:
174
FileChannel
Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。
FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。
打开FileChannel
在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputS...
分类:
编程语言 时间:
2015-01-05 16:41:10
阅读次数:
178