Как защититься от наводнения - PullRequest
0 голосов
/ 17 декабря 2010

Я сделал своего IRC бота и столкнулся с проблемой затопления.Я пытаюсь найти способ распределить сообщения таким образом, чтобы, если все 10 человек выполняли команду одновременно, это не приводило к чрезмерному затоплению бота.Как бы я это сделал?Я думал о реализации очереди, но я не уверен, куда идти после этого.

Я не использую никаких фреймворков для этого бота, и при этом я не хочу переключаться на какие-либо фреймворки (если это не очень просто).

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

Конечно, вы можете использовать очередь.

Пусть один поток помещает вещи в очередь, а другой поток обрабатывает элементы из очереди в хорошем темпе. Это образец классической модели потребитель / производитель .

Просто убедитесь, что вы не позволяете своей очереди поглотить всю вашу память в случае чрезмерного затопления. (Например, вы можете просто отбросить сообщения, если очередь заполнена.)

0 голосов
/ 18 декабря 2010

java.util.concurrent, вероятно, имеет то, что вы хотите.Исполнитель или просто BlockingQueue, например.

...