2010-12-17 86 views
0

我已經制作了我的IRC bot,並且遇到了洪水問題。我試圖找出一種方法來分隔這些信息,所以如果有10個人同時執行一個命令,它不會使機器人過度氾濫。我將如何做到這一點?我正在考慮實施一個隊列,但我不確定在那之後要去哪裏。如何防止洪水

我沒有使用這個機器人的任何框架,也不想切換到任何框架(除非它非常容易)。

+0

那不是垃圾郵件。 – geoffspear 2010-12-17 20:38:49

+0

我想我應該改寫它然後。我想防止洪水。 – zamN 2010-12-17 21:07:18

回答

2

當然,你可以使用一個隊列。

讓一個線程放入隊列中的東西,讓另一個線程以不錯的速度處理隊列中的項目。這是經典consumer/producer pattern的一個實例。

只要確保你不會讓你的隊列吃掉你的所有記憶,以防過度氾濫。 (例如,如果隊列已滿,您可以放下郵件。)

+0

好吧,我將一次管理隊列中的多個添加項。因此,讓我們說10個人決定運行發送頻道「hello world!」的我!hello命令,我希望能夠管理它。你的例子只是在每一個我不想要的命令之前延遲它。我希望它發送服務器「Hello World!」如果人們要求<5或其他方面的內容。 – zamN 2010-12-17 22:22:22

0

java.util.concurrent可能具有您想要的。例如一個執行器或者一個BlockingQueue。