当前位置: 首页 > news >正文

网站建设找c宋南南电商平台介绍

网站建设找c宋南南,电商平台介绍,一个人做网站 优帮云,微信公众号申请注册官网Java 中的 IO(输入/输出)和 NIO(新输入/输出)都是处理输入和输出操作的方式,它们的主要区别在于如何处理数据的读写。 阻塞与非阻塞: IO是阻塞的,这意味着当一个线程调用read()或write()时,该线…

Java 中的 IO(输入/输出)和 NIO(新输入/输出)都是处理输入和输出操作的方式,它们的主要区别在于如何处理数据的读写。

  1. 阻塞与非阻塞:

    • IO是阻塞的,这意味着当一个线程调用read()或write()时,该线程被阻塞,直到有一些数据被读取或写入。该线程在此期间不能再做任何事情了。
    • NIO则可以非阻塞地进行读写操作。当线程从通道读取数据到缓冲区或从缓冲区写入通道时,线程可以同时进行其他任务。线程通常将非阻塞IO的空闲时间用于在其他通道上执行IO操作,所以一个线程现在可以管理多个输入和输出通道(channel)。
  2. 选择器/多路复用器:

    • NIO有选择器的概念,选择器能够监控多个开放的通道,检查哪个通道准备好了进行读写。 这种模式使得一个单独的线程可以管理多个通道。
  3. 数据处理:

    • IO面向流(Stream Oriented),即一个流必须从一个地方移动到另一个地方。它能够持续、顺序地处理数据。但不能随机访问数据,每次只能从头开始。
    • NIO面向缓冲(Buffer Oriented),这意味着数据是直接读到或写自一个缓冲区的。可以随时回到缓冲区,重新读取数据,但这在IO操作中是不可能的。

这就是IO和NIO的主要区别。

重点讲一下选择器怎么运行的:

NIO通过使用Selector选择器来监控通道。选择器是Java NIO提供的一个对象,它可以注册到多个通道上,监听通道中发生的事件(操作如何就绪)。接下来的段落会解释NIO是如何使用选择器来监控通道的。

首先,你需要创建一个Selector对象:

Selector selector = Selector.open();

然后,你可以将一个或多个通道(通常是ServerSocketChannel或SocketChannel)注册到这个Selector:

channel.configureBlocking(false);
SelectionKey key = channel.register(selector, SelectionKey.OP_READ);

上面的代码首先将通道设置非阻塞模式,然后将通道注册到选择器上,关注(或说"订阅")读就绪事件。OP_READ是一个常量,表示读操作就绪的事件。

现在,已经设置好了通道和选择器,接下来就可以使用选择器来轮询哪个注册的通道准备好了某个操作。下面就是一个基本的选择循环:

while (true) {int readyChannels = selector.select();if(readyChannels == 0) continue;Set<SelectionKey> selectedKeys = selector.selectedKeys();Iterator<SelectionKey> keyIterator = selectedKeys.iterator();while(keyIterator.hasNext()) {SelectionKey key = keyIterator.next();if(key.isReadable()) {// a channel is ready for reading} else if (key.isWritable()) {// a channel is ready for writing}keyIterator.remove();}
}

在上述代码中,selector.select()阻塞等待直至至少有一个注册的通道就绪。接着,使用selectedKeys()方法来访问就绪的通道,这个方法返回一个SelectionKey对象的集合,每一个SelectionKey对象都代表了一个注册到这个选择器的、已经就绪的通道。

通过isReadable()isWritable()方法,你可以检查通道的读或写事件是否已经就绪。如果这些方法返回true,那么你就可以开始进行读或写操作了。

以上就是Java NIO如何使用选择器来监控多个通道的基本过程。请注意这只是一个基础例子,真实的使用中还需要处理更多问题,例如处理异常,配置通道和选择器等。

http://www.yayakq.cn/news/741655/

相关文章:

  • 北京响应式网站开发曲靖企业网站
  • 新乡市网站建设电脑培训班哪个网站是用vue做的
  • 网站建设的违约责任东莞网站建设团队全网天下
  • 广西建设厅关公网站转运公司网站制作
  • 电子商务网站的设计要求自己怎么创建微信小程序
  • 深圳公司网站制作企业制作网站 美工
  • 伊利集团网站建设实训wordpress在线表单
  • 网站续费 多久视频剪辑素材免费网站
  • 网站建设需要那些基础国内设计好的网站案例
  • 有什网站可以做设计赚钱做外贸的要有自己的网站吗
  • html5新增标签有哪些济南网络seo公司
  • 注册过域名后怎么建设网站宿州信息网招聘
  • 黔江做网站开发公司合作协议
  • 从化网站开发网站查备案密码
  • 电话用网站做综合布线百度关键词排名优化工具
  • 网站建设多长时间能学会内涵 网站 源码
  • 多与pR值高的网站做链接如何购买网站域名
  • 怎么做家政的网站找项目上哪个平台好
  • 为啥做网站最牛的html5网站建设
  • 安徽省和住房建设厅网站今天的新闻头条最新消息
  • 校园电商平台网站建设门户一号wordpress 主题下载
  • 万户网络做网站中核华兴建设有限公司投标网站
  • 微信分销网站建设多少钱济南做网站的网络公司
  • 安徽省建设工程造价管理总站网站长沙县不错的建站按效果付费
  • 学做卤菜网站深圳住建官网
  • 长宁区网站建设网站制网站后台信息怎么更新
  • 重庆王网站制作WordPress5分钟建站
  • 空包网站分站怎么做电子政务网站建设的步骤一般为
  • 无棣网站制作网盘app下载
  • 上海网站建设服务商wordpress 优秀博客