这种情况应该如何修改设计?

近来在做一个模块,用的是一个如下的大概流程:
涉及的主要类:
Task 任务类--自定义
Container 存储的容器类--自定义
外部程序调用我做的模块接口传给我一个String字符串;我将这个字符串解析、封装成一个任务Task,然后将这个任务Task加入Container容器中。后台会启动多个线程去容器Container中搜索任务,然后将任务拿出来处理掉。

现在在实际应用中出现这样一个问题,即外部调用程序给我的任务很多很急,然后所有的任务Task都往容器Container中扔。后台从容器中检出任务并处理掉的线程来不及很快的处理完容器Container中已有的任务,结果导致Container中的东西越来越多,最后出现 OutOfMemory的问题。
各位大侠,如何处理这个问题啊,应该在什么地方加入什么机制来解决这个问题,希望大家多给我出几个主意。
比较头疼,先谢谢大家!

可以将Container做Task数量限制,新加入的Task字符如果超出数量限制,先不要解析为Task,而是放到一个队列中保存。当Container中Task数量减少的时候,就可以从队列中取出Task字符,解析为Task,并添加到Container中

这种情况你可能需要将你的Task持久化,Container容器可以只缓存一部分先进来的Task。当后台程序处理掉Container中的任务时再唤醒一些持久化的Task。