
nio
文章平均质量分 94
nio
life1024
hello
展开
-
关于BIO同步阻塞,NIO同步非阻塞,AIO异步非阻塞,多路复用
前言使用异步,非阻塞。是为了减少线程的开销(因为正常情况下一个IO如一个socket客户端的连接,server需要单独开一个线程,传统的socket是同步阻塞的)(1)同步/异步 :内核缓冲区 向用户缓冲区 态写数据的过程,如果这个过程 中, 用户线程不阻塞就是异步,阻塞就是同步。(2)阻塞/非阻塞 : 用户线程 是否一直等待内核缓冲区有数据,有数据才会返回的为阻塞。不管有没有数据都返回的叫做非阻塞。1.1. JavaIO读写原理无论是Socket的读写还是文件的读写,在Ja....转载 2020-06-16 16:05:13 · 967 阅读 · 0 评论 -
Reactor和Proactor
两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。两个与事件分离器原创 2017-01-06 14:02:56 · 324 阅读 · 0 评论 -
netty 事件驱动(二)
上一篇文件浅析了Netty中的事件驱动过程,这篇主要写一下异步相关的东东。首先,什么是异步了?异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。异步的好处是不会造成阻塞,在高并发情形下会更稳定和更高的吞吐量。说到Netty中的异步,就不得不提ChannelFuture。Netty中的IO操原创 2017-01-06 14:08:01 · 394 阅读 · 0 评论 -
netty 事件驱动(一)
本篇文章着重于浅析一下Netty的事件处理流程,Netty版本为netty-3.6.6.Final。Netty定义了非常丰富的事件类型,代表了网络交互的各个阶段。并且当各个阶段发生时,触发相应的事件交给pipeline中定义的handler处理。举个例子,如下一段简单的代码:ChannelFactory factory = new NioServerSo原创 2017-01-06 14:06:22 · 927 阅读 · 0 评论 -
neety 原理
1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二原创 2017-01-06 14:05:15 · 1362 阅读 · 0 评论 -
java Nio 异步操作(四)channel
Java NIO 的核心组成部分:1.Channels2.Buffers3.Selectors 我们首先来学习Channels(java.nio.channels):通道 1)通道基础 通道(Channel)是java.nio的第二个主要创新。它们既不是一个扩展也不是一项增强,而是全新、极好的Java I/O示例,提供与I/O服务的直接连接。Channel用于在字原创 2017-01-06 12:36:59 · 2812 阅读 · 0 评论 -
java Nio 异步操作(三)
异步channel API主要引入三个异步类: AsynchronousFileChannel,AsynchronousSocketChannel, and AsynchronousServerSocketChannel.AsynchronousFileChannel跟FileChannel区别:不保存全局的position和offset,可以制定访问位置,也支持并发访问文件不同。原创 2017-01-06 12:35:51 · 1129 阅读 · 0 评论 -
java nio 操作(2)异步阻塞 socket实现
一.同步阻塞IO BIO就是阻塞式的IO,网络通信中对于多客户端的连入,服务器端总是与客户端数量一致的线程去处理每个客户端任务,即,客户端与线程数1:1,并且进行读写操作室阻塞的,当有你成千上完的客户端进行连接,就导致服务器不断的建立新的线程,最后导致低通资源不足,后面的客户端不能连接服务器,并且连接入的客户端并不是总是在于服务器进行交互,很可能就只是占用着资源而已。二.原创 2017-01-06 12:19:14 · 608 阅读 · 0 评论 -
java nio 异步操作 (一)
先来看些nio基础的类库关系图用pd大致画了下相关的图片上面是一些理论的关系图下面是一些测试代码相关的代码都加了必要的注释文件通道 FileChannelpackage test;import java.io.IOException;import java.io.RandomAccessFil原创 2017-01-06 12:10:04 · 795 阅读 · 0 评论 -
同步 异步 阻塞 非阻塞
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下:序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙原创 2017-01-06 12:12:55 · 308 阅读 · 0 评论