LruCache原理(线程安全)

参考资料1
参考资料2
put:

如果 key 或者 value 为空会抛出异常,否则在同步块中进行添加操作。
首先是 putCount加一,然后调用 safeSizeOf方法增加size,接着把数据放到 map中,
如果这个 key 已经存放了数据,那么应该减去这条数据的大小,
因为它已经被覆盖了。同步块结束后,如果确实覆盖了数据,会调用 entryRemove,这个方法默认是空,什么也没做,我们自己创建 LruCache
时可以选择重写。最后还需要调用 trimToSize,这个方法用来防止数据超出 maxSize
。

trimToSize

内部是一个无限循环,删除 map里面最久未使用的,然后更新 size,如果 size小于 maxSize 就跳出循环。

你可能感兴趣的:(LruCache原理(线程安全))