【发布时间】:2016-10-14 17:47:56
【问题描述】:
我经常听说,拥有一个负责与客户的所有通信的单一线程被认为是“好的设计”。
但是,现在我有多个线程与其他服务器通信以处理客户端请求。
当前设计会将响应排入队列以发送给选择线程。选择线程然后将响应出列并将它们发送到适当的客户端。
这太愚蠢了,imo。我有大约 30 个线程准备好向客户端发送响应,它们都将它们排入队列,并让一个选择线程一个接一个地发送它们。
假设一个封闭的系统,有没有办法安全地绕过这个限制并从一个没有(或者如果他没有相同的)选择器的线程作为最初接受客户端请求的线程发送?如果有,怎么做?
【问题讨论】:
-
服务器通常在自己的线程中为每个客户端服务。如果您听到其他内容,那么我会认为这是错误的谣言。
-
@Heri 这不是谣言。显然,您从未对非阻塞多路复用 I/O 感到兴奋,这就是问题所在。它于 2002 年左右在
java.nio包中被引入 Java 1.4,并且在 Unix 和 Windows 和其他操作系统中已经存在了几十年。不要在这里发布错误信息。
标签: java multithreading server nio throughput