`
flypeace
  • 浏览: 157977 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

nio经验

    博客分类:
  • java
阅读更多

   当有 客户端 连接请求时:

 

        SocketChannel socketChannel1 = serverSocketChannel.accept();

 

一般情况下,会设置 Blocking 为 false 非阻塞的,如下:

 

        socketChannel1.configureBlocking(false);
        socketChannel1.register(this.selector, SelectionKey.OP_READ );

 

但是,如果设置为阻塞:

 

        socketChannel1.configureBlocking(true);
//     socketChannel1.register(this.selector, SelectionKey.OP_READ );

 

则,就不能进行 register 注册事件操作了,相应的,也不会有事件通知,对客户端的读需要用一只循环从流中读,如果有就读出来,如果没有则阻塞住,直到有可读的数据:

socketChannel.read(byteBuffer);//阻塞,直到有数据

或者 

socketChannel1.socket().getInputStream().read(byte[]);//也会阻塞

 

 

 

另外,在设置block 模式之前,如果去读,也是阻塞的。

        SocketChannel socketChannel1 = serverSocketChannel.accept();
       
        socketChannel.read(byteBuffer);//阻塞,直到有数据

        socketChannel1.configureBlocking(false);
        socketChannel1.register(this.selector, SelectionKey.OP_READ );

 

设置 非阻塞之后,就是非阻塞了,可以正常接收读事件。

 

 

 

分享到:
评论

相关推荐

    IO和NIO区别

    NIO 的 API 更加复杂,需要更多的编程经验和技巧。 4. 性能和资源占用 NIO 相比标准 IO,有更多的优势,特别是在高并发连接的情况下。在 NIO 中,单线程可以管理多个通道,而标准 IO 则需要多个线程来管理多个连接...

    nio入门 IBM教材,pdf格式

    ### NIO 入门知识点详解 #### 一、NIO 的引入及其背景 - **NIO 的起源**:NIO(New Input/Output)库是在 JDK 1.4 中引入的,...无论是对于初学者还是有一定经验的开发者来说,掌握 NIO 都是一项非常有价值的技能。

    ibm的nio教程

    描述中提到的"博文链接"可能提供了更深入的实践经验和示例代码,但由于实际链接无法访问,我们将基于通用的NIO知识进行阐述。 NIO在Java中自1.4版本引入,主要由`java.nio`包下的类和接口组成。关键组件包括: 1. ...

    IBM Java文档库 NIO 入门

    《IBM Java文档库 NIO 入门》这篇教程主要针对的是Java 1.4引入的New Input/Output (NIO)库,这是一个重要的更新,旨在提高Java程序的I/O性能,特别是面向块的I/O操作。NIO弥补了传统I/O(基于java.io.*包)的不足,...

    Java NIO实例

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种新的I/O模型,它为Java程序员提供了更高效、灵活的I/O...当然,理解NIO的原理并熟练运用它,需要一定的实践和经验积累。

    详细介绍 NIO与Netty编程-实战讲义详细pdf.7z

    **NIO(非阻塞I/O)与Netty编程**是现代Java网络应用开发中的重要技术,它们在处理高并发、低...总之,理解并熟练掌握NIO和Netty是提升Java网络应用性能的关键,这本实战讲义将为读者提供宝贵的理论知识和实践经验。

    JavaNIO服务器实例Java开发Java经验技巧共6页

    本资料"JavaNIO服务器实例Java开发Java经验技巧共6页"可能是某个Java开发者或讲师分享的一份关于如何在Java中构建NIO服务器的教程,涵盖了6个关键页面的内容。尽管具体的细节无法在此直接提供,但我们可以根据Java ...

    NIO-实践-多线程实例

    我这里主要介绍几点经验总结: 1.Selector.select()在筛选就绪的SelectionKey的时候,采用的是阻塞模式。同时只要在就绪的SelectionKey列表中有至少一个SelectionKey存在,前述方法均将返回。 SocketChannel被...

    JavaNIO浅析IO模型Java开发Java经验技巧共1

    Java NIO,全称为New Input/Output,是Java在1.4版本引入的一个新特性,为Java程序员提供了更高效的数据传输方式。与传统的IO模型相比,NIO具有非阻塞、多路复用等优点,尤其适用于高并发、低延迟的网络应用。本文将...

    java_NIO_入门

    本教程由经验丰富的Java程序员和技术作者Greg Travis编写,他通过本教程向希望深入了解JDK1.4 NIO库的程序员提供了一个学习平台。读者可以通过电子邮件或教程中提供的“反馈”链接与作者联系,获取技术支持或提出...

    Java I/O, NIO and NIO.2

    Java I/O, NIO, 和 NIO.2 是Java平台中处理输入/输出操作的核心组件,对于任何Java开发者来说,理解和掌握...通过阅读《Java I:O, NIO and NIO.2》这本书,可以深入理解这些概念,并获得实践经验,提升Java编程技能。

    jvm、nio、netty优化使用.txt

    Netty是一个NIO客户端服务器框架,可以快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化和简化了TCP和UDP套接字服务器等网络编程。 “快速简便”并不意味着最终的应用程序将遭受可维护性或性能...

    JavaNio视频下载_百度云盘资源

    2. **在线课程**:如Coursera、Udemy等平台上提供的Java NIO专题课程,通常由经验丰富的讲师授课,适合不同程度的学习者。 3. **书籍**:例如《Java NIO》一书详细介绍了Java NIO的各个方面,非常适合深入学习。 4. ...

    java nio 入门

    尽管不需要大量的编程经验,但是熟悉Java的基本语法和概念是必须的。此外,了解一些传统的I/O库也有助于更好地理解NIO的优势和用途。 NIO的入门教程会逐步引导读者从理解NIO的基本概念出发,到学习如何使用NIO库...

    Java NIO pdf

    ### Java NIO (New Input/Output) 概述与核心概念 #### 一、Java NIO 的引入背景 Java NIO(New Input/Output),即新的输入/输出库...无论是初学者还是有经验的开发者,都应该投入时间去掌握 Java NIO 的相关知识。

    NIO框架Netty实现高性能高并发

    事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二进制编解码技术,精 心的设计Reactor线程模型,达到上述性能指标是完全有可能的。 下面我们就一起来看下...

    java_NIO_入门(良好排版格式).pdf

    - **基本编程技能**:具备一定的 Java 编程经验有助于更快地上手 NIO。 #### 六、代码实践 本教程提供了多个代码示例来帮助理解 NIO 的不同方面。这些示例通常是从较大的 Java 程序中摘录出来的,旨在展示 NIO 库...

    BIO,NIO,AIO,Netty面试题

    在Java开发领域,BIO(Blocking I/O)、NIO...熟悉以上知识点,并能结合实际项目经验进行深入讨论,将对Java开发工程师的面试大有裨益。在面试过程中,除了理论知识,还应展示对这些技术的实际运用和问题解决能力。

    Java_NIO深入浅出.doc

    Java NIO,即New Input/Output,是Java 1.4版本引入的一个新特性,旨在提供一种更高效、更灵活的I/O操作方式,弥补了传统I/O(基于流的I/O)的一些不足。...然而,理解和使用NIO也需要开发者具备一定的经验和技巧。

Global site tag (gtag.js) - Google Analytics