资讯专栏INFORMATION COLUMN

准备好了再通知我:网络NIO

gougoujiang / 2028人阅读

摘要:当的数据准备好时,就会接到通知,得到那些已经准备好的数据。当与客户端连接的数据没有准备好时,会处于等待状态不过幸好,用于管理的线程数是极少量的,而一旦有任何一个准备好了数据,就能立即得到通知,获取数据进行处理。

java NIO是NEW IO的简称,它是一种可以替代javaIO的一套新的IO机制。它提供了一套不同java标准IO的操作机制。严格来说,NIO与并发并无直接关系。但是,使用NIO可以大大提高线程的使用效率。
java NIO中涉及的基础内容有通道和缓冲区、文件IO和网络IO。
对于标注的网络IO来说,我们会使用socket进行网络的读写。为了让服务器可以支持更多的客户端连接,通常的做法是为每个客户端连接开启一个线程。
要了解NIO,我们首先要知道在NIO中的一个关键组建Channel(通道)。Channel有点类似于流,一个Channel可以和文件或者网络Socket对应,如果Channel对应着一个Socket,那么往这个Channel中写数据,就等同于向Socket中写入数据。
另外一个与Channel密切相关的Selector,在Channel的众多实现中,有一个SelectortableChannel实现,表示可被选择的通道。任何一个SelectableChannel都可以将自己注册到一个Selector中,这样,这个Channel就能被Selector所管理。而一个Selector可以管理多个SelectableChannel。当SelectableChannel的数据准备好时,Selector就会接到通知,得到那些已经准备好的数据。而SocketChannel就是SelectableChannel的一种。
一个Selector可以由一个线程进行管理,而一个SocketChannel则可以表示一个客户端连接,因此就构成由一个或者极少数线程,来处理大量客户端连接的结构。当与客户端连接的数据没有准备好时,Selector会处于等待状态(不过幸好,用于管理Selector的线程数是极少量的),而一旦有任何一个SocketChannel准备好了数据,Selector就能立即得到通知,获取数据进行处理。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74882.html

相关文章

  • Java IO初探

    Java IO对大多数Java程序员来说是熟悉又陌生,熟悉的是感觉到处都有它的身影,小到简单的读取文件,大到各种服务器的应用,陌生的是Java IO背后到底是一个怎样的机制,今天就让我们去了解一下这位老朋友吧。本文不讲解Java IO如何具体使用,有这方面需求的同学可以自己查下。 IO模型 要说IO,就不得不说IO模型,IO模型大家都有所了解,同步异步,阻塞非阻塞什么的,总的来说IO模型可分为以下...

    edgardeng 评论0 收藏0
  • 彻底理解Netty,这一篇文章就够了

    摘要:如果什么事都没得做,它也不会死循环,它会将线程休眠起来,直到下一个事件来了再继续干活,这样的一个线程称之为线程。而请求处理逻辑既可以使用单独的线程池进行处理,也可以跟放在读写线程一块处理。 Netty到底是什么 从HTTP说起 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的P...

    yy13818512006 评论0 收藏0
  • 如何用Java与python代码解释IO模型

    摘要:缓冲区的限制不能为负,并且不能大于其容量。如果指向的位置超过限制,则抛出异常。使用临时缓冲区执行低层次操作。临时缓冲区对象离开作用域,并最终成为被回收的无用数据。 前天刚好看了点《UNIX网络编程》,比较头大。现在我来整理一下所学所得,并用于个人备忘。如果有不对,请批评。 想要解锁更多新姿势?请访问https://blog.tengshe789.tech/ IO模型介绍 IO模型是什么...

    SnaiLiu 评论0 收藏0
  • 如何用Java与python代码解释IO模型

    摘要:缓冲区的限制不能为负,并且不能大于其容量。如果指向的位置超过限制,则抛出异常。使用临时缓冲区执行低层次操作。临时缓冲区对象离开作用域,并最终成为被回收的无用数据。 前天刚好看了点《UNIX网络编程》,比较头大。现在我来整理一下所学所得,并用于个人备忘。如果有不对,请批评。 想要解锁更多新姿势?请访问https://blog.tengshe789.tech/ IO模型介绍 IO模型是什么...

    Jochen 评论0 收藏0
  • Netty详解

    摘要:的产生原因是使的编程更容易。定义一个异步事件驱动的网络应用框架,帮助快速开发高性能的客户端与服务端。每一个一个客户端请求注册一个这个会处理这个请求的事件直到这个请求结束。 近日在学习netty,却发现没那么容易上手,专研了几天后算是弄清楚了netty到底是干什么的,所看资料比较多,此文章便把这些资料与我的思考做一个总结帮助大家更好入门。 要更好理解netty首先要了解以下一些前置知识 ...

    worldligang 评论0 收藏0

发表评论

0条评论

gougoujiang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<