我的业务场景就像是,我们从一个大资源表中为用户分配了一些资源[20-30],如果他/她没有在适当的时候回复[某些可配置的超时值],我们分配那些资源给别人。如果他/她及时提交,我们会将这些资源标记为已完成'。
现在,我计划使用ScheduledExecutorService。每次我将一个资源包分配给用户时,我将该引用放在ScheduledPool中,该引用在超时值后执行,检查提交是否到来,否则'释放'资源。
我担心的是,如果超时值被配置为高[超过20分钟],那么对于开始20分钟,我将保持'添加'池中的引用。它不会导致内存不足错误,换句话说,它不会超出池容量的范围。
是否有任何优化的方法来处理此方案。计划任务不是优选的,因为将来每个资源可能有多个超时。因此,用于释放资源的计划任务将不会非常有效。