我正在为 android应用->通过TCP服务器通信设计架构。这将是基于TCP的自定义应用程序协议...我熟悉网络编程,但是我在Java方面工作不多(即使是Java问题,这也是更普遍的问题)-我工作也不多客户端数量不确定的应用程序(在这种情况下,取决于您拥有多少个android应用程序用户)。 因此,我几乎没有疑问和疑问。
场景:
问题: 实现服务器端以处理此类应用程序的客户端连接的最佳方法(最佳实践)是什么?
根据我的研究,您只有三种可能的方法:
编辑:
详细说明:
1。仅使用一个线程池在这里似乎“很奇怪”,因为事实是我们需要一个庞大的线程池才能为每个tcp连接分配线程。使用线程池来服务例如http请求(在请求完成后将关闭tcp连接),这似乎是个好主意..但对于将要使用较长时间的tcp连接却不是)
2。每次每次为TCP连接创建一个线程-似乎也很受限制(Why is creating a Thread said to be expensive?)
Java threads are implemented as native threads and huge numbers of threads is the wrong way to write a practical Java application. 我想当然,这取决于您通常拥有哪种类型的应用程序。
3。在Java中使用线程池和非阻塞异步方法(类似于nodejs对libuv的操作)。
根据我阅读的内容(到目前为止也提出了建议),这似乎是最好的方法。也许是因为我对这类应用程序有更多的经验(nodejs不阻塞单线程工作程序)-但似乎是最好的解决方案。
也许有一些方法-我不熟悉的做法-可以使此过程更有效?
您可以为此类应用程序建议任何资源(书籍或类似书籍)吗?
注意:请注意,我了解到,我可以使用一些我已经熟悉的方法使此过程更有效-例如,当应用程序进入后台时关闭tcp连接-并在重新建立连接时建立连接用户再次使用该应用程序且类似(但这当然取决于应用程序本身)。
我想知道,我是否在这里遗漏了一些东西?如果您想拥有大量用户-以及大量tcp连接-您将需要为每个用户使用一个线程(或上面提到的其他方法)。
我经历过的其他资源: