![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NIO
文章平均质量分 63
我爱地沟油
这个作者很懒,什么都没留下…
展开
-
linux IO模型
IO模型分为同步阻塞,同步非阻塞,同步多路复用,异步阻塞(没有此情况),异步非阻塞. 当用户调用chanel.read和stream.read后,会切换到操作系统内核态来完成真正的数据读取。而数据读取又分为两个阶段: 等待数据阶段 复制数据阶段 阻塞IO(同步模式): 调用read后,网络上还没数据过来,read方法就阻塞住,一直等到linux内核有数据返回,并复制数据结束才继续执行。 非阻塞IO(同步模式): 调用read后,网络上还没数据过来,立即返回,循环多次调用,直到有数据为止,然后.原创 2021-09-18 19:19:43 · 75 阅读 · 0 评论 -
socket各阻塞模式示例代码
同步阻塞 server端: public class Server { public static void main(String[] args) throws IOException { ServerSocketChannel ssc=ServerSocketChannel.open(); ssc.bind(new InetSocketAddress(8000)); List<SocketChannel> channels=new原创 2021-09-18 17:24:28 · 185 阅读 · 0 评论 -
NIO零拷贝
文件大小:1.46 GB (1,568,946,426 字节) 使用transferTo零拷贝,代码如下,耗时12116ms public static void main(String[] args) throws IOException { long start=System.currentTimeMillis(); FileChannel inputChannel=new FileInputStream(new File("E:\\video\\第1阶段.原创 2021-09-17 21:00:56 · 119 阅读 · 0 评论 -
ByteBuffer
1.ByteBuffer的正确使用姿势: 2.ByteBuffer的属性: * limit:ByteBuffer的读写限制 * capacity:ByteBuffer的容量,即ByteBuffer.allocate(N).N为capacity * position:ByteBuffer读写到哪一个位置. 结构如下: put():会一直增加Position的位置,如下: get():会一直减少Postioin的位置,直至0,如下: flip():为读取做准备。会改变两个指针:将Pos...原创 2021-09-17 08:08:26 · 259 阅读 · 0 评论 -
Selector的原理
原创 2021-09-17 02:30:17 · 93 阅读 · 0 评论