果洛wap网站建设哪家好,企业设计网页,在哪找专业做淘宝网站,广告联盟没网站可以做吗1,Java NIO Java non-blocking IO 即 非阻塞IO,线程在等待的时候#xff0c;可以做其他的事情。 2,IO 对比NIO IO 是面向流#xff0c;NIO 是面向缓冲 面向流是指每次从流中读出一个或者多个字节#xff0c;直到全部读出为止 面向缓冲区是指将数据先存到一个缓存区 IO 是阻…1,Java NIO Java non-blocking IO 即 非阻塞IO,线程在等待的时候可以做其他的事情。 2,IO 对比NIO IO 是面向流NIO 是面向缓冲 面向流是指每次从流中读出一个或者多个字节直到全部读出为止 面向缓冲区是指将数据先存到一个缓存区 IO 是阻塞 NIO 是非阻塞 IO: 当线程调用read() 或者write() 的时候只有当数据被读取或者完全写入否则该线程在此期间干不了其他事情。 NIO: 一个线程向通道发送请求读取数据开始直到数据变的可以读取之前线程不会阻塞可以一直做其他事情。 3,IO 与 NIO 的选择 每次发送少量数据但是需要建立多个通道的情况例如聊天室,这种情况适合用NIO 大量数据少量连接这种情况适合用IO 4,NIO有三个核心模块Selector(选择器)、Channel(通道)、Buffer(缓冲区) Buffer与Channel 进行交互时需要将数据从Channel 读取到Buffer,从Buffer 写入到Channel缓冲区本质上是一块可以存取数据的内存只是被包装成了NIO Buffer 对象提供一些方法可以访问。 缓冲区基本类型ByteBufferCharBufferShortBufferIntBufferLongBufferFloatBufferDoubleBuffer Channel: Channel好比IO 流的模拟任何数据read() 或者write(),都必须通过Channel对象。 Selector:NIO 用select 机制不用为每一个客户端连接新的线程处理而是将其注册到Selector 对象中这样单线程利用Selector 对象管理大量的并发的网络连接。 当有读写或时间发生时候可以从Selector对象中获得一个SelectorKey 通过这个SelectorKey 可以找到具体的Channel 来获取从客户端传过来的数据。 通道和缓冲区的机制使得线程无需阻塞地等待IO事件的就绪但是总是要有人来监管这些IO事件。这个工作就交给了selector来完成这就是所谓的同步。 要使用Selector得向Selector注册Channel然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪这就是所说的轮询。一旦这个方法返回线程就可以处理这些事件。 Selector中注册的感兴趣事件有 OP_ACCEPT即连接事件(TCP 连接), 对应于SelectionKey.OP_CONNECT OP_CONNECT 即确认事件, 对应于SelectionKey.OP_ACCEPT OP_READ 即读事件, 对应于SelectionKey.OP_READ, 表示 buffer 可读. OP_WRITE即写事件, 对应于SelectionKey.OP_WRITE, 表示 buffer 可写. 转载于:https://www.cnblogs.com/pickKnow/p/9712062.html