Java的selectionkey_java11教程--类SelectionKey用法

每次向选择器注册通道时,都会创建一个选择键。 密钥保持有效,直到通过调用其cancel方法,关闭其通道或关闭其选择器来取消密钥。 取消密钥不会立即将其从选择器中删除; 而是将其添加到选择器cancelled-key set中,以便在下一个选择操作期间将其删除。 可以通过调用其isValid方法来测试密钥的有效性。

选择键包含表示为整数值的两个操作集 。 操作集的每个位表示由密钥的信道支持的可选操作的类别。

兴趣集确定下次调用选择器的一个选择方法时将测试哪些操作类别的准备情况。 利息集初始化为创建密钥时给出的值;

就绪集合通过键的选择器识别检测到键的通道准备就绪的操作类别。 创建密钥时,就绪集初始化为零; 它可能稍后在选择操作期间由选择器更新,但不能直接更新。

选择键的就绪集指示其通道已准备好用于某些操作类别是暗示但不保证这样的类别中的操作可由线程执行而不会导致线程阻塞。 在完成选择操作之后,就绪设置最有可能是准确的。 外部事件和在相应通道上调用的I / O操作可能会使其不准确。

该类定义了所有已知的操作集位,但是精确地由给定通道支持哪些位取决于通道的类型。 SelectableChannel的每个子类定义了一个validOps()方法,该方法返回一个集合,该集合仅标识通道支持的那些操作。 尝试设置或测试密钥通道不支持的操作设置位将导致适当的运行时异常。

通常需要将一些特定于应用程序的数据与选择键相关联,例如,表示更高级别协议状态的对象,并处理准备就绪通知以实现该协议。 因此,选择键支持将单个任意对象附加到键。 可以通过attach方法附加对象,然后通过attachment方法检索。

选择键可以安全地由多个并发线程使用。 选择操作将始终使用操作开始时当前的兴趣设置值。

用于套接字操作的操作设置位。

用于套接字连接操作的操作设置位。

读操作的操作设置位。

写操作的操作设置位。

构造此类的实例。

将给定对象附加到此键。

检索当前附件。

请求取消此密钥通道及其选择器的注册。

返回为其创建密钥的通道。

检索此键的兴趣集。

将此键的兴趣集设置为给定值。

以原子方式将此键的兴趣集设置为现有兴趣集和给定值的按位交集(“和”)。

以原子方式将此键的兴趣集设置为现有兴趣集和给定值的按位联合(“或”)。

测试此密钥的通道是否已准备好接受新的套接字连接。

测试此密钥的通道是否已完成或未能完成其套接字连接操作。

测试此键的频道是否已准备好进行阅读。

判断此密钥是否有效。

测试此密钥的通道是否已准备好写入。

检索此键的就绪操作集。

返回为其创建此键的选择器。

读操作的操作设置位。

假设选择键的兴趣集在OP_READ的开头包含OP_READ 。 如果选择器检测到相应的通道已准备好进行读取,已达到流结束,已远程关闭以进一步读取,或者有未决错误,则它会将OP_READ添加到该键的就绪操作集中。

写操作的操作设置位。

假设选择键的兴趣集在OP_WRITE的开头包含OP_WRITE 。 如果选择器检测到相应的通道已准备好写入,已远程关闭以进一步写入,或者有未决的错误,则它将OP_WRITE添加到该键的就绪集。

用于套接字连接操作的操作设置位。

假设选择键的兴趣集在OP_CONNECT的开头包含OP_CONNECT 。 如果选择器检测到相应的套接字通道已准备好完成其连接顺序,或者有一个错误未决,则它会将OP_CONNECT添加到密钥的就绪集。

用于套接字操作的操作设置位。

假设选择键的兴趣集在OP_ACCEPT的开头包含OP_ACCEPT 。 如果选择器检测到相应的服务器套接字通道已准备好接受另一个连接,或者有一个错误未决,则它会将OP_ACCEPT添加到该密钥的就绪集。

构造此类的实例。

返回为其创建密钥的通道。

即使在取消密钥后,此方法仍将继续返回通道。

返回为其创建此键的选择器。

即使在取消密钥后,此方法仍将继续返回选择器。

判断此密钥是否有效。

密钥在创建时有效并保持不变,直到它被取消,其通道关闭或其选择器关闭。

请求取消此密钥通道及其选择器的注册。

返回时,密钥将无效,并且将被添加到其选择器的已取消密钥集中。

在下一个选择操作期间,密钥将从所有选择器的密钥集中删除。

如果此键已被取消,则调用此方法无效。 一旦取消,密钥将永远无效。

可以随时调用此方法。 它在选择器的已取消键集上同步,因此如果与涉及相同选择器的取消或选择操作同时调用,则可能会短暂阻止。

检索此键的兴趣集。

保证返回的集合仅包含对该密钥的通道有效的操作位。

将此键的兴趣集设置为给定值。

可以随时调用此方法。 如果在选择操作正在进行时调用此方法,则它对该操作没有影响; 下一个选择操作将看到对密钥兴趣集的更改。

以原子方式将此键的兴趣集设置为现有兴趣集和给定值的按位联合(“或”)。

对于此方法或interestOpsAnd(int)的其他并发调用,此方法保证是原子的。

可以随时调用此方法。 如果在选择操作正在进行时调用此方法,则它对该操作没有影响; 下一个选择操作将看到对密钥兴趣集的更改。

以原子方式将此键的兴趣集设置为现有兴趣集和给定值的按位交集(“和”)。

对于此方法或interestOpsOr(int)的其他并发调用,此方法保证是原子的。

可以随时调用此方法。 如果在选择操作正在进行时调用此方法,则它对该操作没有影响; 下一个选择操作将看到对密钥兴趣集的更改。

检索此键的就绪操作集。

保证返回的集合仅包含对该密钥的通道有效的操作位。

测试此键的频道是否已准备好进行阅读。

调用k.isReadable()形式的此方法的行为与表达式的行为完全相同

k.readyOps() & OP_READ != 0

如果此键的通道不支持读操作,则此方法始终返回false 。

测试此密钥的通道是否已准备好写入。

调用k.isWritable()形式的此方法的行为与表达式的行为完全相同

k.readyOps() & OP_WRITE != 0

如果此键的通道不支持写操作,则此方法始终返回false 。

测试此密钥的通道是否已完成或未能完成其套接字连接操作。

调用k.isConnectable()形式的此方法的行为与表达式的行为完全相同

k.readyOps() & OP_CONNECT != 0

如果此密钥的通道不支持套接字连接操作,则此方法始终返回false 。

测试此密钥的通道是否已准备好接受新的套接字连接。

k.isAcceptable()形式的此方法的调用与k.isAcceptable()行为完全相同

k.readyOps() & OP_ACCEPT != 0

如果此键的通道不支持套接字接受操作,则此方法始终返回false 。

将给定对象附加到此键。

稍后可以通过attachment方法检索附加对象。 一次只能附加一个物体; 调用此方法会导致丢弃任何以前的附件。 附加null可以丢弃当前附件。

检索当前附件。

字段

变量和类型

字段

描述

static int

用于套接字操作的操作设置位。

static int

用于套接字连接操作的操作设置位。

static int

读操作的操作设置位。

static int

写操作的操作设置位。构造方法

变量

构造器

描述

protected

构造此类的实例。变量和类型

方法

描述

abstract void

请求取消此密钥通道及其选择器的注册。

abstract int

检索此键的兴趣集。

将此键的兴趣集设置为给定值。

int

以原子方式将此键的兴趣集设置为现有兴趣集和给定值的按位交集(“和”)。

int

以原子方式将此键的兴趣集设置为现有兴趣集和给定值的按位联合(“或”)。

boolean

测试此密钥的通道是否已准备好接受新的套接字连接。

boolean

测试此密钥的通道是否已完成或未能完成其套接字连接操作。

boolean

测试此键的频道是否已准备好进行阅读。

abstract boolean

判断此密钥是否有效。

boolean

测试此密钥的通道是否已准备好写入。

abstract int

检索此键的就绪操作集。

abstract Selector

返回为其创建此键的选择器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值