每个请求线程的TCP服务器

时间:2013-08-18 03:11:25

标签: java multithreading tcp

我只是想了解如何用Java编写每请求线程的TCP服务器。 我已经编写了一个每个连接线程的服务器,它运行serverSocket.accept()并在每次新连接进入时创建一个新线程。

如何将其修改为每个请求的线程服务器? 我想传入的连接可以放入某种队列,但是你怎么知道哪一个发出了请求&准备好服务?

我怀疑NIO在这里是必要的,但不确定。

感谢。

[编辑]

要清楚 - 原始的“服务器”只是我编写的一个循环,它等待连接,然后将其传递给新的线程。

讲师提到了“每请求线程”架构,我想知道它是如何工作的“引擎盖”。

我对它如何运作的第一个想法可能是完全错误的。

2 个答案:

答案 0 :(得分:1)

您可以使用Selector来实现目标。 Here是一个很好的例子,你可以参考。

答案 1 :(得分:0)

您可以使用普通IO,或阻止NIO,(或非阻塞NIO或异步NIO2)您可以为每个连接(或共享工作线程池)提供任何多个线程,但除非这些线程等待数据库等慢速服务,这可能会更快(如果你想要低延迟,可能会慢很多)