SelectableChannel API 用法

openclaw : 无法将“openclaw”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方案 本文主要介绍了openclaw : 无法将“openclaw”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案,希望能对使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 阅读详情

java.nio.channels
类 SelectableChannel

java.lang.Object
  继承者 java.nio.channels.spi.AbstractInterruptibleChannel
      继承者 java.nio.channels.SelectableChannel
所有已实现的接口:
Closeable, Channel, InterruptibleChannel
直接已知子类:
AbstractSelectableChannel

public abstract class SelectableChannel
    
     extends AbstractInterruptibleChannel
    
    
     implements Channel
    
 
 

可通过 Selector 实现多路复用的通道。

为了与选择器一起使用,此类的实例必须首先通过 register 方法进行注册。此方法返回一个表示该通道已向选择器注册的新 SelectionKey 对象。

向选择器注册后,通道在注销 之前将保持注册状态。注销涉及释放选择器已分配给该通道的所有资源。

不能直接注销通道;相反,必须取消 表示通道注册的键。取消某个键要求在选择器的下一个选择操作期间注销通道。可通过调用某个键的 cancel 方法显式地取消该键。无论是通过调用通道的 close 方法,还是中断阻塞于该通道上 I/O 操作中的线程来关闭该通道,都会隐式地取消该通道的所有键。

如果选择器本身已关闭,则将注销该通道,并且表示其注册的键将立即无效。

一个通道至多只能在任意特定选择器上注册一次。

可通过调用 isRegistered 方法来确定是否向一个或多个选择器注册了某个通道。

多个并发线程可安全地使用可选择的通道。

阻塞模式
可选择的通道要么处于 阻塞 模式,要么处于 非阻塞 模式。在阻塞模式中,每一个 I/O 操作完成之前都会阻塞在其通道上调用的其他 I/O 操作。在非阻塞模式中,永远不会阻塞 I/O 操作,并且传输的字节可能少于请求的数量,或者可能根本不传输字节。可通过调用可选择通道的 isBlocking 方法来确定其阻塞模式。

新创建的可选择通道总是处于阻塞模式。在结合使用基于选择器的多路复用时,非阻塞模式是最有用的。向选择器注册某个通道前,必须将该通道置于非阻塞模式,并且在注销之前可能无法返回到阻塞模式。

从以下版本开始:
1.4
另请参见:
SelectionKey, Selector

构造方法摘要
protected SelectableChannel()           初始化此类的一个新实例。

 

方法摘要
abstract  ObjectblockingLock()           获取其 configureBlocking 和 register 方法实现同步的对象。
abstract  SelectableChannelconfigureBlocking(boolean block)           调整此通道的阻塞模式。
abstract  booleanisBlocking()           判断此通道上的每个 I/O 操作在完成前是否被阻塞。
abstract  booleanisRegistered()           判断此通道当前是否已向任何选择器注册。
abstract  SelectionKeykeyFor(Selector sel)           获取表示通道向给定选择器注册的键。
abstract  SelectorProviderprovider()           返回创建此通道的提供者。
 SelectionKeyregister(Selector sel, int ops)           向给定的选择器注册此通道,返回一个选择键。
abstract  SelectionKeyregister(Selector sel, int ops, Object att)           向给定的选择器注册此通道,返回一个选择键。
abstract  intvalidOps()           返回一个操作集,标识此通道所支持的操作。

 

从类 java.nio.channels.spi.AbstractInterruptibleChannel 继承的方法
begin, close, end, implCloseChannel, isOpen

 

从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

 

从接口 java.nio.channels.Channel 继承的方法
close, isOpen

 

构造方法详细信息

SelectableChannel

protected SelectableChannel()
初始化此类的一个新实例。

方法详细信息

provider

public abstract SelectorProvider provider()
返回创建此通道的提供者。

返回:
创建此通道的提供者

validOps

public abstract int validOps()
返回一个操作集,标识此通道所支持的操作。此整数值中设置的各位正好表示对此通道有效的操作。对于给定的具体通道类,此方法始终返回相同的值。

返回:
有效操作集

isRegistered

public abstract boolean isRegistered()
判断此通道当前是否已向任何选择器注册。新创建的通道总是未注册的。

由于键取消和通道注销之间固有的延迟,所以在已取消某个通道的所有键后,该通道可能在一定时间内还会保持已注册状态。关闭通道后,该通道可能在一定时间内还会保持已注册状态。

返回:
当且仅当此通道为已注册时才返回 true

keyFor

public abstract SelectionKey keyFor(Selector sel)
获取表示通道向给定选择器注册的键。

返回:
当此通道是向给定选择器注册的最后一个通道时返回该键,如果此通道当前未向该选择器注册,则返回 null

register

public abstract SelectionKey register(Selector sel,
                                      int ops,
                                      Object att)
                               throws ClosedChannelException
向给定的选择器注册此通道,返回一个选择键。

如果当前已向给定的选择器注册了此通道,则返回表示该注册的选择键。该键的相关操作集将更改为 ops,就像调用 interestOps(int) 方法一样。如果 att 参数不为 null,则将该键的附件设置为该值。如果已取消该键,则抛出 CancelledKeyException。

如果尚未向给定的选择器注册此通道,则注册该通道并返回得到的新键。该键的初始可用操作集是 ops,并且其附件是 att。

可在任意时间调用此方法。如果调用此方法的同时正在进行另一个此方法或 configureBlocking 方法的调用,则在另一个操作完成前将首先阻塞该调用。然后此方法将在选择器的键集上实现同步,因此如果调用此方法时并发地调用了涉及同一选择器的另一个注册或选择操作,则可能阻塞此方法的调用。

如果正在进行此操作时关闭了此通道,则此方法返回的键是已取消的,因此返回键无效。

参数:
sel - 要向其注册此通道的选择器
ops - 所得键的可用操作集
att - 所得键的附件,可能为 null
返回:
表示此通道向给定选择器注册的键
抛出:
ClosedChannelException - 如果此通道已关闭
IllegalBlockingModeException - 如果此通道处于阻塞模式
IllegalSelectorException - 如果此通道与给定的选择器不是由相同的提供者创建的
CancelledKeyException - 如果此通道当前已向给定的选择器注册,但是相应的键已经被取消
IllegalArgumentException - 如果 ops 集的某个位不对应于此通道所支持的某个操作,也就是说,如果 set & ~validOps() != 0

register

public final SelectionKey register(Selector sel,
                                   int ops)
                            throws ClosedChannelException
向给定的选择器注册此通道,返回一个选择键。

调用此便捷方法的形式为

sc.register(sel, ops)
与下列方法调用完全相同:
sc.register(sel, ops, null)

参数:
sel - 要向其注册此通道的选择器
ops - 所得键的可用操作集
返回:
表示此通道向给定选择器注册的键
抛出:
ClosedChannelException - 如果此通道已关闭
IllegalBlockingModeException - 如果此通道处于阻塞模式
IllegalSelectorException - 如果此通道与给定的选择器不是由相同的提供者创建的
CancelledKeyException - 如果此通道当前已向给定的选择器注册,但是相应的键已经被取消
IllegalArgumentException - 如果 ops 集的某个位不对应于此通道所支持的某个操作,也就是说,如果 set & ~validOps() != 0

configureBlocking

public abstract SelectableChannel configureBlocking(boolean block)
                                             throws IOException
调整此通道的阻塞模式。

如果向一个或多个选择器注册了此通道,则尝试将此通道置于阻塞模式将导致抛出 IllegalBlockingModeException。

可在任意时间调用此方法。新的阻塞模式仅影响在此方法返回后发起的 I/O 操作。对于某些实现而言,这可能需要在所有挂起的 I/O 操作完成之前阻塞其他操作。

如果调用此方法的同时正在进行另一个此方法或 register 方法的调用,则在另一个操作完成前将首先阻塞该调用。

参数:
block - 如果为 true,则此通道将被置于阻塞模式;如果为 false,则此通道将被置于非阻塞模式
返回:
此可选择通道
抛出:
ClosedChannelException - 如果此通道已关闭
IllegalBlockingModeException - 如果 block 为 true 并且此通道已向一个或多个选择器注册
IOException - 如果发生 I/O 错误

isBlocking

public abstract boolean isBlocking()
判断此通道上的每个 I/O 操作在完成前是否被阻塞。新创建的通道总是处于阻塞模式。

如果此通道已关闭,则此方法返回的值是未指定的。

返回:
当且仅当此通道处于阻塞模式时才返回 true

blockingLock

public abstract Object blockingLock()
获取其 configureBlocking 和 register 方法实现同步的对象。在要求在短时间内维持特定阻塞模式的适配器实现中,这通常是很有用的。

返回:
阻塞模式锁定对象
使用Simulink来模拟多旋翼无人机在风扰动条件下的飞行情况,并分析其稳定性 本教程详细介绍了使用Simulink进行多旋翼无人机风扰动稳定性分析的完整流程。首先构建包含飞行器动力学模型、控制系统和环境模拟模块的系统框架,重点讲解简化动力学方程的实现方法。随后指导设计PID控制器来维持姿态稳定,并添加随机风扰动模型模拟环境干扰。通过设置输入信号和输出显示,最终实现对不同风速条件下无人机控制性能的评估。该实例为无人机控制系统设计提供了实用的仿真方法,强调利用MATLAB工具进行可视化分析和参数优化,以提高系统抗干扰能力和稳定性。 阅读详情

相关推荐

【学习体会】Lighttools8.4.0:软件基本使用+光度学基本概念+系统初始设置

关于Lighttools8.4.0软件的安装教程,详见我的另一篇博文:【软件安装】win10下Lighttools8.4.0(64)光学系统建模软件的安装教程 在本文中,我们将学习到,光度学的基本概念、系统初始设置、物体模型坐标的使用方法、简单光学系统实例、系统浏览器的作用和内容、设置虚拟相机并渲染视图中的图像、仿真结果3D显示等。 如果有其他感兴趣的内容但是我又没有写的,欢迎在评论区留言! 光度学的基本概念 软件的基本介绍 参考博文:https://www.docin.c...

LeonJin的博客 2万+

java SelectableChannel虚拟类

文章目录总结SelectableChannel虚拟类方法register(Selector sel, int ops, Object att)方法详解register方法可能引发的异常 总结 SelectableChannel虚拟类是一种可通过Selector多路复用的通道,为了与选择器一起使用,必须首先通过register方法注册此类的实例。此方法返回一个新的SelectionKey对象,该对象表示频道在选择器中的注册,一旦向选择器注册,通道将保持注册状态,直到取消注册为止。这涉及取消选择器分配给通道的

weixin_45754452的博客 882

MTK平台TP驱动设备树与GPIO配置实战解析

本文详细解析了MTK平台TP驱动开发中的设备树与GPIO配置实战。通过DCT工具配置GPIO引脚,结合设备树节点定义触摸参数,并分享驱动移植、编译调试技巧及常见问题解决方案,帮助开发者快速掌握MTK触摸驱动开发核心。

ice55的博客 234

Java-NIO-Selector

1 概述 Selector一般称之为选择器,也可以翻译为多路复用器。它是Java-NIO中核心组件中的一个,用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写。如此可实现单线程管理多个channels,也就是可以管理多个网络连接。 使用Selector的好处在于:使用更少的线程来就可以处理通道了,相比使用多个线程,避免了线程上下文切换带来的开销 2 可选择通道(SelectableChannel) 1)不是所有的Channel都能够被Selector复用的。像F...

爪哇人的博客 1604

详解Xilinx FPGA高速串行收发器GTX/GTP(6)--Pattern Generator/Pattern Checker

详解Xilinx FPGA高速串行收发器GTX/GTP(6)--Pattern Generator/Pattern Checker

孤独的单刀 1625

ollama使用CPU安装qwen-coder模型_并在eclipse中使用ai coder插件_配置本地qwen-coder模型_ollama常用操作记录---AI大模型应用探索0002

文章摘要:作者分享了在Windows 10上安装和使用Ollama模型的过程。尝试了不同规模的qwen-coder模型(7b、1.5b和0.5b),发现7b模型响应极慢(需35分钟),而1.5b模型表现较好(3秒响应)。最终选择1.5b版本用于代码开发辅助,支持多语言自动补全。同时提到在最新版Eclipse中的AIcoder配置问题。文章重点比较了不同模型规模在CPU环境下的实际使用体验和响应速度差异。

添柴程序猿的专栏 683

NIO-SelectableChannel详解

SelectableChannel("可被选择"通道):抽象类,此类实现了InterruptableChannel接口."可选择"通道,就是noblocking通道,它的实现需要Selector的支持.因此这些Channel取名为"SelectableChannel"是可以理解的. 为 了和Selector(选择器)一起使用,此类的实例必须首先通过register方法进行注册.此方法返回一个...

深入一点 830

3.摄像头组件- CVP (ISP)

本文介绍 车载摄像头组件-ISP

2401_83458819的博客 1617

SelectableChannel

SelectableChannel 可选通道的使用大致过程如下: 1. 新建通道 2. 将通道已经通道感兴趣的事件注册到选择器Selector上 3. 通过SelectKey获得需要处理的通道,然后对通道进行处理 SelectableChannel实现类 下图是SelectableChannel的实现类,可以看出主要分为几大块: 有关UDP协议的:DatagramChannel...

baidu_14922873的博客 910

HQChart实战教程64-自定义分时图标题栏

分时图标题栏显示的是当前十字光标所在位置的分钟信息,显示在分时图窗口顶部。一般会显示品种的名称,日期,时间,价格,均价 涨幅,成交量,金额等等,hqchart内置会显示这些信息。如果要额外显示其他的字段,就需要通过替换格式化标题输出函数来是现实。我们在hqchart实例创建完成以后,通过OnCreatedCallback回调函数替换自己的格式化输出函数。返回 { AryText:[ { Text:文字, Color:颜色},…入参 data={ Data: 当前十字光标所在位置的分钟线 }

小银 1056

高空抛物监控系统:基于YOLOv8的轨迹追踪与可视化系统

本文详细介绍了一种基于YOLOv8深度学习模型的高空抛物监控系统,该系统能够实时检测并追踪高层建筑抛掷物的运动轨迹。文章包含完整的系统设计思路、算法实现细节、数据集构建方法以及基于PyQt5的可视化界面开发过程。我们提供了完整的Python实现代码,并讨论了系统的性能优化策略和实际部署考量。此外,我们还推荐了几个公开可用的高空抛物数据集,并详细分析了系统的应用前景和技术挑战。

YOLO 446

Java NIO之Selector、SelectableChannel和SelectorProvider

高性能IO模型浅析 http://www.cnblogs.com/fanzhidongyzby/p/4098546.html 系统间通讯方式之(Java NIO多路复用模式)(四) http://blog.youkuaiyun.com/u010963948/article/details/78507255 Java NIO之Selector、SelectableChan

猿类崛起 4291

ARINC429协议分析

如下表所示,ARINC429在发送一帧过程中,首先发送以START开始,以END结束,共发送32bits数据,其中0~7bits为Lable数据,9~8bits为SDI数据,10~28bits为数据,29~30bits为SSM,31bit为校验位End30292827262524校验位SSM2322212019181716DATA15141312111098SDI7654321Start。

5223

SelectionKey API 用法

https://www.cnblogs.com/Free-Thinker/p/6231743.html java.nio.channels 类 SelectionKey java.lang.Object java.nio.channels.SelectionKey 直接已知子类: AbstractSelectionKey public abstract class S...

乔志勇笔记 1691

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

NIO-SelectableChannel

SelectableChannel("可被选择"通道):抽象类,此类实现了InterruptableChannel接口."可选择"通道,就是noblocking通道,它的实现需要Selector的支持.因此这些Channel取名为"SelectableChannel"是可以理解的. 为 了和Selector(选择器)一起使用,此类的实例必须首先通过reg...

weixin_33721427的博客 96

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java的selectionkey_SelectionKey API 用法

java.nio.channels类 SelectionKeyjava.lang.Objectjava.nio.channels.SelectionKey直接已知子类:AbstractSelectionKeypublic abstract class SelectionKeyextends Object表示 SelectableChannel 在 Selector 中的注册的标记。每次向选择器注册...

weixin_34116482的博客 458

Selector API用法

java.nio.channels 类 Selector java.lang.Object java.nio.channels.Selector 直接已知子类:AbstractSelector public abstract class Selectorextends Object SelectableChannel 对象的多路复用器。 可通过调用此类的 open 方法创建选择器,该方法...

weixin_33904756的博客 106

【转载】NIO-SelectableChannel

本文转载自http://shift-alt-ctrl.iteye.com/blog/1841324   SelectableChannel("可被选择"通道):抽象类,此类实现了InterruptableChannel接口."可选择"通道,就是noblocking通道,它的实现需要Selector的支持.因此这些Channel取名为"SelectableChannel"是可以理解的. 为 了

武汉红喜 1555

SocketChannel API用法

java.nio.channels 类 SocketChannel java.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel java.nio.channels.spi.AbstractSelectableCh

大树叶 技术专栏 3226

API笔记之java.nio.channels.SelectionKey

API笔记之java.nio.channels.SelectionKey   Java代码  import java.nio.channels.SelectableChannel;   import java.nio.channels.Selector;   import java.util.concurrent.atomic.AtomicReferenceFie

莫名的拉风的博客 2141

Java NIO API详解 (II)[z]

SelectableChannel 这个抽象类是所有支持异步IO操作的channel(如DatagramChannel、SocketChannel)的父类。SelectableChannel可以注册到一个或多个Selector上以进行异步IO操作。 SelectableChannel可以是blocking和non-blocking模式(所有channel创建的时候都是blocking模式),只有...

wufan0023的专栏 198

java nio2详解_java NIO API详解(2)

ScatteringByteChannel继承了ReadableByteChannel并提供了同时往几个ByteBuffer中写数据的能力。GatheringByteChannel继承了WritableByteChannel并提供了同时从几个ByteBuffer中读数据的能力。InterruptibleChannel用来表现一个可以被异步关闭的Channel。这表现在两方面:1.当一个Interr...

weixin_34588509的博客 239

ServerSocketChannel API用法

java.nio.channels 类 ServerSocketChannel java.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel java.nio.channels.SelectableChannel java.nio.channels.spi.AbstractSelect

大树叶 技术专栏 869

SelectionKey API用法

java.nio.channels 类 SelectionKey java.lang.Object java.nio.channels.SelectionKey 直接已知子类: AbstractSelectionKey public abstract class SelectionKeyextends Object 表示 SelectableChannel 在 S

大树叶 技术专栏 3915

java NIO API详解(2)

ScatteringByteChannel 继承了ReadableByteChannel并提供了同时往几个ByteBuffer中写数据的能力。   GatheringByteChannel 继承了WritableByteChannel并提供了同时从几个ByteBuffer中读数据的能力。   InterruptibleChannel 用来表现一个可以被异步关闭的Channel。这表现...

mxdxm8899的专栏 121
上一篇: SelectionKey API用法
下一篇: Selector API用法
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值