繁体   English   中英

在JAVA NIO选择器中查询?

[英]A query in JAVA NIO Selector?

我正在开发对等应用程序。 因为每个对等方都有一个服务器套接字通道和一个套接字通道,..现在我需要两个选择器来处理服务器套接字通道和套接字通道的连接,...

SelectorProvider似乎是一个单例类,它仅对Selector的单个实例进行处理,..我无法将其用于两个套接字通道。

有没有一种方法可以在一个程序的单个实例中使用两个选择器。

private ServerSocketChannel svrScktChnl;
private SocketChannel socketChannel;

两个选择器

public Selector selector=null;
public Selector playerSelector=null;

我试图分别初始化这些选择器,一个用于服务器套接字通道,另一个用于套接字通道。

但是我不能再次初始化,因为它引发了一个错误,..

现在我需要两个选择器来处理服务器套接字通道和套接字通道的连接,...

不,你不会。 您可以对两者使用相同的选择器,除非出于某些原因(此处未作说明)要在单独的线程中处理它们,这实际上违反了NIO所代表的一切。

SelectorProvider似乎是一个单例类

假。 SelectorProvider.provider()返回单例,但您不需要使用它:到处都有API,您可以指定自己的提供程序。 并不重要,因为:

而且它只能选择一个选择器实例

假。 我不知道“ fices”是什么意思,但是SelectorProvider.openSelector()每次调用它都会返回一个新的Selector ,而无需豪华的技巧在此处发布问题并可能永远等待的情况下,您可能会自己发现一个新的Selector 。即使提供者本身是单身人士,也可能不是正确的答案。

..我不能同时用于两个套接字通道..

不。显然您从未真正尝试过。 您需要了解,这是一门经验科学,您需要自己进行实验。 在Internet站点上发布问题并坐下来等待答案并不能有效地利用您或他人的时间,也无法像提供自己的工作一样快速地提供正确的答案。

它抛出一个错误

您不能期望任何人能以最少的信息为您提供帮助。 您是否会接受客户的错误报告?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM