【发布时间】:2013-08-18 16:01:45
【问题描述】:
我只是想了解如何用 Java 编写一个每个请求线程的 TCP 服务器。 我已经编写了一个每个连接线程的服务器,它运行 serverSocket.accept() 并在每次新连接进入时创建一个新线程。
如何将其修改为每个请求线程的服务器? 我想传入的连接可以放入某种队列,但你怎么知道哪个已经发出请求并准备好服务?
我怀疑这里需要 NIO,但不确定。
谢谢。
[编辑]
要明确 - 原始的“服务器”只是我编写的一个循环,它等待连接,然后将其传递给新线程。
讲师提到了“每个请求线程”架构,我想知道它是如何“在幕后”工作的。
我对它如何工作的第一个想法可能是完全错误的。
【问题讨论】:
-
您没有提供足够的信息。究竟如何将您的原始服务器修改为每个请求线程的服务器是无法回答的,因为我们不知道您的原始服务器是如何实现的或它的性质是什么。据我们所知,这只是在某处的配置文件中将“每个连接”更改为“每个请求”的问题。请显示您的代码,描述您遇到的问题,预期和实际结果,以及您采取的步骤尝试解决它。
-
我也不确定你为什么认为 NIO 是相关的;在尝试猜测应该使用哪些工具之前,您需要弄清楚要做什么。
-
为什么?你希望得到什么好处?每个连接一次如何获得多个请求?问题真的没有意义。
-
服务器只是我自己编写的一个循环,它接受一个连接并将其交给一个新线程。为什么我要尝试为每个请求创建一个线程?学习。
-
学习什么?真正的服务器不是这样写的。
标签: java multithreading tcp