Ehcache(五): cache.put(element)做了些什么?
1, checkStatus(): if (!status.equals(Status.STATUS_ALIVE))
2, element.resetAccessStatistics():
??? ?? ?lastAccessTime = 0;
??????? nextToLastAccessTime = 0;
??????? hitCount = 0;
??? 怎么把一个element里的这些信息都给置成了0?
3, elementExists = isElementInMemory(key) || isElementOnDisk(key);
??? 判断要put进来的element是否已存在. 为什么不分是Memory和Disk呢??
??? Memory中用了Map来模拟内存,?
????
??? disk判断时: diskElements.containsKey(key) || spool.containsKey(key).?
?? ???? private Map diskElements = Collections.synchronizedMap(new HashMap());
?? ???? private Map spool = new HashMap();
?? ??? ?
?? ???? 怎么一点也看不出与disk相关的信息: 如,IO,stream等.?
4, backOffIfDiskSpoolFull
??? 看来这个方法里并不真正做back? 那么真正的backOff是在什么方法里做的??
5, 真正的put
??? 怎么类MemoryStore里的doPut方法是空的??
7, registeredEventListeners.notifyElementXXX方法:?
??? 这些监听是怎么设置的??