繁体   English   中英

如何定义自己的SelectableChannel?

[英]How do I define my own SelectableChannel?

我如何定义一种新类型的java.nio.channels.SelectableChannel (比如串口)?

我的理解是java实现基于unix select() c函数(我似乎记得Windows实现略有不同)

根据操作系统(和JVM args!),调用不同的本机操作系统功能,但它们的共同点是它的本机代码 - 基本功能不是用Java实现的。

如果你想创建一个访问底层操作系统的select() (或类似)的lib(它确实依赖于文件句柄),我认为你几乎被迫使用JNI。 我不相信有任何方法可以解决它。

Java中的Selector / SelectableChannel实际上是select()可以做的贫血子集。

您可能希望扩展java.nio.channels.spi.AbstractSelectableChannel以创建所需的实现。 如果您要求不同的东西,您需要提供更详细的问题。 JDK源代码可以在几个不同的许可证下下载,具体取决于您下载的版本。 您可以选择查看JDK实现( java.nio.channels.Channeljava.nio.channels.SocketChannel等等)以完全了解您需要实现的内容。 但是,如果这样做,请注意不要从JDK源复制代码,除非您可以遵守下载的源代码的许可。

Java NIO一书可以帮到你。

暂无
暂无

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

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