selector wakeup

1 篇文章 0 订阅

selector.wakeup主要是为了唤醒阻塞在selector.select上的线程,让该线程及时去处理其他事情,例如注册channel,改变interestOps、判断超时等等。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SelectorJava NIO的一个关键类,用于实现非阻塞I/O操作。通过Selector,可以同时监视多个Channel的状态,从而实现单线程处理多个通道的能力。 Selector的原理是通过底层操作系统的IO多路复用机制实现的。在Linux系统Java使用的是EPoll机制。当程序调用Selector的select()方法时,Selector会向操作系统注册对应的事件,然后将当前线程阻塞。当有事件发生时,操作系统会通知SelectorSelector会将对应的Channel标记为就绪状态,使得程序可以进行读写操作。 在Java NIOSelector与Channel是一一对应的关系。当一个Channel注册到Selector上时,Selector会为该Channel创建一个SelectionKey,通过SelectionKey可以获取Channel的状态和事件。Selector可以使用select()、select(long timeout)、selectNow()进行阻塞和非阻塞的选择操作。而Selector使用wakeup()方法可以唤醒被阻塞的select()操作。 总结起来,Selector通过底层操作系统的IO多路复用机制,实现了多个Channel的监视和处理,提供了高效的非阻塞I/O操作能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Selector 实现原理](https://blog.csdn.net/weixin_37570817/article/details/77980162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [netty入门(五)Selector介绍和原理](https://blog.csdn.net/zhufei463738313/article/details/129078112)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值