gpt4 book ai didi

java - 具有空兴趣集的 SelectionKey

转载 作者:行者123 更新时间:2023-12-02 05:13:49 25 4
gpt4 key购买 nike

我创建了一个抽象

public interface Channel<R extends SelectableChannel & ReadableByteChannel, W extends SelectableChannel & WritableByteChannel>

对于java.nio.channels.SelectableChannel ,它提供了 isBidirectional方法和 getter 来检索写/读 channel (可能相等也可能不相等)。该 channel 及其可能的多个其他实例与封装选择器的 I/O 调度程序一起使用。

由于我想要非阻塞写入,因此调度程序使用应写入相应 channel 的 ByteBuffer 填充多个队列,并添加 java.nio.channels.SelectionKey.OP_WRITE如果写入到期,则根据 key 的兴趣集。

对于双向 channel ,这是一个简单的更新操作,因为读取 channel (==写入 channel ),已经有兴趣处理OP_READ 。如果 channel 是单向的,我必须获取写入 channel (!=读取 channel )并感兴趣地注册它OP_WRITE .

<小时/>

问题

假设队列现在为空,执行写入操作后我应该做什么?对于双向 channel ,我只需将兴趣集重置为 OP_READ .

但是我应该如何处理单向 channel ,可以调用key.interestOps(0);吗? ,它不违反方法的不变性

(ops & ~channel().validOps()) != 0 .

(单向)写入 channel 的兴趣集将为空。

<小时/>

简而言之

java.nio.channels.SelectionKey.interestOps(0)如果我当前对选择键不感兴趣,那么正确的调用是什么?或者我应该删除 key ?

最佳答案

Is it okay to invoke key.interestOps(0);

是的,这完全没问题。

关于java - 具有空兴趣集的 SelectionKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27133007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com