gpt4 book ai didi

Java:请求的细粒度锁定?

转载 作者:行者123 更新时间:2023-12-01 14:35:31 24 4
gpt4 key购买 nike

我正在尝试为以下场景创建细粒度锁定机制:

我有一个数据存储,里面有许多序列化的Cache对象。每个缓存都属于某个人、团体或公司,并且每个缓存都可以通过以下四种方式之一进行修改:创建、删除、删除或插入。当Cache被修改时,我想阻止对其的访问。每个 Cache 均使用 CacheLocation 对象进行标识,该对象存储目录和文件名以及完整路径,以方便使用。

目前,我在名为 RequestQueue 的类中使用数组列表,该类保存当前正在处理的 CacheLocation 对象。然后,当另一个线程进入时,它会检查队列以查看它请求的 CacheLocation 是否已被使用。如果是这种情况,则会使用 while 循环定期检查 CacheLocation,直到将其放置在那里的请求将其删除。

我认为使用 CacheLocation 键与 BlockingQueue 值的 HashMap 可能是一个主意。这将导致大量 BlockingQueue 对象,但我可以很好地管理队列。

是否有更好的方法来进行这种细粒度锁定?

最佳答案

如果我正确理解您的描述,使您的设计相当简单的一种方法是:

  • 使用ConcurrentHashMap<CacheLocation, Cache>存储缓存(我假设 CacheLocation 是不可变的,或者至少永远不会改变)
  • 确保使用相关 CacheLocation 上的锁来保护对缓存的所有访问。对象

关于Java:请求的细粒度锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com