【问题标题】:How to protect against Flooding如何预防洪水
【发布时间】:2010-12-17 20:26:51
【问题描述】:

我已经制作了 IRC 机器人,但遇到了泛滥的问题。我正在尝试找出一种将消息隔开的方法,因此如果 10 个人同时执行一个命令,它不会过度淹没机器人。我该怎么做?我正在考虑实施一个队列,但我不确定在那之后去哪里。

我没有为此机器人使用任何框架,也不想切换到任何框架(除非它非常简单)。

【问题讨论】:

  • 我想我应该改写它。我想防止洪水泛滥。

标签: java flooding


【解决方案1】:

当然,你可以使用队列。

让一个线程将东西放入队列,让另一个线程以良好的速度处理队列中的项目。这是经典consumer / producer pattern 的一个实例。

只要确保不要让队列耗尽所有内存,以防过度泛滥。 (例如,如果队列已满,您可以只丢弃消息。)

【讨论】:

  • 好吧,我将同时管理几个添加到队列中的内容。因此,假设有 10 个人决定运行我的 !hello 命令,该命令发送频道“hello World!”,我希望能够管理它。您的示例只是在我不想要的每个命令之前将其延迟。我希望它向服务器发送“Hello World!”如果人们要求
【解决方案2】:

java.util.concurrent 可能有你想要的。例如,一个 Executor 或一个 BlockingQueue。

【讨论】:

    猜你喜欢
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多