有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java管理多个传出TCP连接

我的程序需要将数据发送到多个(大约50个)“客户端”站点。重要的数据位必须通过TCP发送,以确保到达。这些连接大多是固定的,在项目的单个活动期间不会发生变化

你认为什么是最好的架构?我听说一般不建议为每个连接创建一个新线程,但是当连接不需要更改时,这个建议有效吗?具有可伸缩性是很好的,但不太重要,因为客户端站的数量预计不会增长

如果有必要,程序是用Java编写的

谢谢

亚历克斯


共 (4) 个答案

  1. # 1 楼答案

    50根线就可以了,去吧。这无关紧要。任何超过200个线程的,开始担心

  2. # 2 楼答案

    无论如何,我都会使用线程池。根据您的线程池配置,它将根据您的需要创建尽可能多的线程,但此解决方案更具可扩展性。这不仅适用于50个客户,也适用于5000个客户

  3. # 3 楼答案

    如果不考虑可伸缩性、吞吐量和内存使用,那么使用50个线程就足够了。它的优点是简单,简单是件好事

    如果你想扩展,或者你关心内存使用(n个线程意味着n个线程栈),那么你需要考虑使用NiO选择器的体系结构。然而,最好的架构可能取决于以下因素:

    • 每个客户工作站需要执行的工作量
    • 工作是否均匀分布(平均)
    • 工作是否涉及其他I/O、访问共享数据结构等,以及
    • 聚合工作接近于使单个处理器饱和
  4. # 4 楼答案

    为什么不使用连接池之类的工具来限制线程的数量呢