2

我希望就如何最好地处理对价值存储的多线程访问提供一些建议或建议。

我的本地值存储旨在保存当前正在使用的对象。如果对象未在使用中,则将其从商店中移除。

一个值通过 thread1 泵入我的存储区,它进入存储区会向侦听器宣布,然后存储该值。进入 thread1 的值要么是全新的值,要么是对现有值的更新。

计时器用于定期从存储中删除当前未使用的任何值,因此该值的所有剩余部分都是由中介在本地保存的 ID。

现在,thread2 上的活动元素可能会唤醒并尝试通过传递它知道的一组值 ID 来访问一组值。有些值已经存储(很好),有些可能不会(悲伤)。那些尚未存储的值将从外部源检索。

我的主要问题是尚未存储且当前正在查询的项目可能会在查询完成之前到达 thread1。

我想尝试避免在进行查询时锁定对商店的访问,因为这可能需要一些时间。

4

1 回答 1

3

您似乎正在寻找某种缓存。您是否尝试调查现有的缓存实现,也许其中一些会这样做?

例如,Guava 缓存实现似乎满足了您的很多要求 - http://code.google.com/p/guava-libraries/wiki/CachesExplained

于 2012-07-08T09:12:40.260 回答