我希望就如何最好地处理价值商店的多线程访问提出一些建议或建议。
我的本地值存储设计用于保存当前正在使用的对象。如果该对象未被使用,则将其从商店中删除。
通过thread1将值输入我的商店,将其进入商店的条目通知给听众,并存储该值。在thread1上的值将是全新值或现有值的更新。
计时器用于定期从商店中删除当前未使用的任何值,因此该值的剩余部分是其中间人在本地持有的ID。
现在,thread2上的活动元素可能会唤醒并尝试通过传递它知道的一组值ID来访问一组值。某些值已经存储(很好)而有些值可能不存在(sadface)。将从外部源检索尚未存储的那些值。
我的主要问题是,尚未存储且当前正在查询的项目可能会在查询完成之前到达thread1。
我想尝试避免在进行查询时锁定对商店的访问,因为这可能需要一些时间。
答案 0 :(得分:3)
您似乎正在寻找某种缓存。您是否尝试调查现有的缓存实现,可能其中一些会执行?
例如,Guava缓存实现似乎涵盖了您的许多要求 - http://code.google.com/p/guava-libraries/wiki/CachesExplained。