【发布时间】:2010-12-17 20:26:51
【问题描述】:
我已经制作了 IRC 机器人,但遇到了泛滥的问题。我正在尝试找出一种将消息隔开的方法,因此如果 10 个人同时执行一个命令,它不会过度淹没机器人。我该怎么做?我正在考虑实施一个队列,但我不确定在那之后去哪里。
我没有为此机器人使用任何框架,也不想切换到任何框架(除非它非常简单)。
【问题讨论】:
-
我想我应该改写它。我想防止洪水泛滥。
我已经制作了 IRC 机器人,但遇到了泛滥的问题。我正在尝试找出一种将消息隔开的方法,因此如果 10 个人同时执行一个命令,它不会过度淹没机器人。我该怎么做?我正在考虑实施一个队列,但我不确定在那之后去哪里。
我没有为此机器人使用任何框架,也不想切换到任何框架(除非它非常简单)。
【问题讨论】:
当然,你可以使用队列。
让一个线程将东西放入队列,让另一个线程以良好的速度处理队列中的项目。这是经典consumer / producer pattern 的一个实例。
只要确保不要让队列耗尽所有内存,以防过度泛滥。 (例如,如果队列已满,您可以只丢弃消息。)
【讨论】:
java.util.concurrent 可能有你想要的。例如,一个 Executor 或一个 BlockingQueue。
【讨论】: