java - 以线程安全的方式重置Ehcache

标签 java multithreading ehcache

我在我的项目中使用Ehcache,并且我有一个辅助类:

public static void reset(Ehcache cache, List<MyClass> list) {
    List<Element> elementList = new ArrayList<Element>(list.size());
    for (MyClass myClass : list) {
        elementList.add(new Element(myClass.getId(), myClass));
    }
    // missing write lock
    cache.removeAll();
    // if findByKey(...) executed at this time, it's result will be null
    cache.putAll(elementList);
}

public static MyClass findByKey(Ehcache cache, Serializable key) {...
public static List<MyClass> findAll(Ehcache cache) {...
public static MyClass findFirstByQuery(Ehcache cache, Criteria criteria) {...
public static List<MyClass> findByQuery(Ehcache cache, Criteria criteria) {...
public static void put(Ehcache cache, MyClass myClass) {...

我需要同步方法。我是否必须在所有方法中手动实现它,或者是否有任何其他(Ehcache 特定)方法来执行此操作?

最佳答案

您在这里只能靠自己了,因为 Ehcache 没有为此提供开箱即用的解决方案。

您还需要意识到,根据更新的频率和运行时间,这可能会导致瓶颈。 您不能找到一种不同的模式来执行此操作吗?

关于java - 以线程安全的方式重置Ehcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25981657/

相关文章:

java - 在 Eclipse 中将 Java 项目与 Ant 集成

java - getAccount JHipster 6.0.1 中未识别 OAuth2AuthenticationToken

java - Java 中没有同步的线程安全单例?

java - Spring Security 通过 session ID 获取登录用户

java - 从hyperledger ca生成的私钥文件中获取java.security.PrivateKey

java - java命令行程序中无法捕获中断

c - IPP链接到非线程静态库时是否线程安全?

java - HashMap 空间和性能问题

java - 如何缓存同一类的其他方法?

java - 在 Ehcache 3 XML 配置中同时设置 TTL 和 TTI