Java套接字节点(经纪人)连接到尚不活跃的节点

时间:2019-04-06 11:15:33

标签: java multithreading

我遇到了一个与套接字相关的问题,其中生成了2个节点,每个节点都与自身以及其他节点进行通信。节点的IP位于一个看起来像这样的“ brokers.txt”文件中。

192.168.1.18:8080
192.168.1.18:8081

第一个代理尝试连接到自身并成功,但随后尝试连接到第二个代理并失败。这是发生的连接的详细图像。

enter image description here

每个节点都有一个服务器侦听器,它是一个线程,以及一个发送方部分,它的作用类似于不是线程的客户端。由于它不是线程,因此无法延迟发送方部分。有没有办法等到发件人部分开始工作而无需等待?

例如,一种可能的解决方案是创建一个重新连接作业,该作业将异步发生,但我不知道这是否最佳。

1 个答案:

答案 0 :(得分:1)

从输出中可以看到,对于越来越多的套接字节点,问题变得越来越大。例如,如果您有3个节点,则错误将为3,依此类推... 线程的意外行为是为什么您需要以不同的方式解决此问题,而又不增加重新连接作业等难以理解的代码的原因。解决方案很简单,一次只一步,首先生成线程,而不生成发送方部分,保存每个线程的实例,最后在任何时候启动发送方部分。这样,每个线程都将启动并运行,这意味着它将已经在侦听。

此解决方案有效,但是,如果您坚持执行重新连接作业,则可以单击以下链接:

https://dzone.com/articles/schedulers-in-java-and-spring