让所有类线程都知道忽略单个事件

时间:2013-12-10 00:31:31

标签: java multithreading

我偶然发现了一个问题,我很确定我过去已经解决过了,但目前找不到一个好的解决方案。

  1. 假设我有多个线程,每个线程都在探测连接。
  2. 如果发现连接断开,则线程将重新连接并且 增加共享计数器。
  3. 如果共享计数器达到N,则 当前线程也将重启远程服务,并将其归零 共享柜台。
  4. 这反过来最终将导致所有线程 重新连接(并再次增加共享计数器)。
  5. 问题是,如何阻止所有线程忽略这个特定的断开连接事件,以防止早期服务重启(或者更糟糕的情况下重启循环,如果有很多线程)?

    环境是普通的Java。

2 个答案:

答案 0 :(得分:1)

跟踪上次重启时间。如果您在最后一次重启时间很短的时间内,请不要增加计数器。

答案 1 :(得分:0)

当然,在这样的一般问题描述中很难找到一个很好的解决方案。

可以指示(通过计数器)这些线程在计数器复位后立即停止计数(观察者模式)(为0)。在开始条件下,这种行为也是可取的。

然后线程将等待计数,直到下一次连接尝试成功。

我希望这是可以理解的。