【发布时间】:2015-04-11 23:24:34
【问题描述】:
我正在尝试使用 java NIO 构建一个异步(非阻塞)HTTP 服务器。我目前有一个线程池实现,并希望将其变成单线程的事件驱动。
事件驱动服务器究竟是如何工作的? 我们还需要线程吗?
我一直在阅读 Java 通道、缓冲区和选择器。 因此,在我创建了 serverSocketChannel 和选择器并侦听请求后,我是否需要将请求移交给其他线程,以便他们可以处理它们并为请求提供服务。如果是这样,它与线程池实现有何不同。
如果我不创建更多可以处理请求的线程,那么同一个线程如何仍然继续侦听请求并处理它们。我说的是 SCALABLE,比如说总共有 100 万个请求,同时有 1000 个请求。
【问题讨论】:
-
你见过Netty吗?如果不是,我不能高度推荐该库以用于异步网络。您仍然需要将异步 I/O 作为一个概念来思考,但在我看来,Netty 可以帮助您更清楚地推理您的设计。
-
谢谢,我会试试的。但是现在,我必须在不使用任何库的情况下做到这一点。所以我只是在寻找开始的概念。
标签: java multithreading nio httpserver event-driven