2013-12-10 44 views
0

我已經偶然發現了一個我很確定我已經解決的問題,但目前找不到一個好的解決方案。讓我們知道所有的班級線程忽略一個事件

  1. 說我有多個線程,每個線程都探測連接。
  2. 如果發現連接斷開,線程將重新連接並增加共享計數器。
  3. 萬一共享計數器達到N時, 當前線程還將重新啓動遠程服務,並且歸零 共享計數器。
  4. 這反過來將最終導致所有線程 重新連接(並再次增加共享計數器)。

問題是,我如何讓所有的線程忽略這個特殊的斷開連接事件,以防止早期的服務重啓(或重啓循環,更糟糕的情況下,如果有很多線程)?

環境是普通的Java。

回答

1

跟蹤上次重新啓動時間。如果您在上次重新啓動時間的短時間內,請勿增加計數器。

+0

謝謝,也想過這個,但希望有一個更優雅的解決方案(猜測被反應式編程原則變得太多了)。 – SyBer

0

當然很難找到這樣的常見問題描述的一個很好的解決方案。

這些線程可以指示(由計數器)停止計數(Observer模式)之後的計數器已經復位(0)。這種行爲在起始條件下也是可取的。

然後一個線程會等待計數,直到下一次連接嘗試成功。

我希望這是可以理解的。

相關問題