以线程安全的方式重置Ehcache

时间:2014-09-22 19:22:30

标签: 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特定的)方法来执行此操作?

1 个答案:

答案 0 :(得分:0)

在Ehcache没有为此提供开箱即用的解决方案的意义上,你自己就在这里。

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