小编典典

Java中的异步IO?

java

除了java.nio之外,java中还有什么用于异步io(基于套接字)的选项?java.nio还会在后台使用线程吗(就像我认为.NET的async-socket-library所做的那样,也许它已被更改),还是使用适当的select调用是“ true”的异步io?


阅读 862

收藏
2020-03-21

共1个答案

小编典典

Java的NIO软件包(从Java6开始)通过Selector提供对非阻塞I / O的仅支持。希望Java7随NIO.2一起提供,它包括异步I / O支持。今天,最好的选择是利用框架。ARMistice提到了Mina。这是其他一些。

  1. Grizzly.。这是Sun的GlassFish服务器的I / O核心。Grizzly提供了一种进行异步读取/写入(通过队列模型)的工具。它都支持TCP和UDP。我曾在几个项目中使用过Grizzly。我对框架有一些喜好不喜欢的地方,但是要详细说明这确实是另一个主题。我要说的是,启动和运行某件东西很容易,而Grizzly为你做了很多繁重的工作。
  2. Netty.。该项目来自Mina项目的一位原始作者。我没有使用过这个,所以我不知道它对异步I / O的支持。你应该看看。
    现在,关于你的线程问题,NIO选择器不将线程用于非阻塞I / O。在JDK6中,他们使用Windows下的select()和较新的Linux内核上的epoll工具。对于异步I / O,线程详细信息取决于框架。
2020-03-21