您的位置:首页 > 编程语言 > Java开发

Java LruCache

2015-08-30 22:10 405 查看
为了更好的使用内存,操作系统中有一种Lru(Least Recently Used)策略,将最近最少使用的项移出容量有限的内存。不仅仅操作系统这样做,平时做一些android应用等也需要在有限的空间内保存一些状态。下面来看分析我们要怎么做这个基于Lru策略的缓存:

能够快速的读取与写入 ①
能够实现Lru策略 ②
能够适应多线程并发访问操作 ③
多个线程可以同时读取,但是写操作与读操作,写操作与写操作互斥 ④


快速的读取与写入

快速的读入与写入很容易是我们想起使用HashMap,而不是使用ArrayList等非结构,因为ArrayList在查找的时候需要遍历进行,不能够适应快读的读取,而HashMap使用hash值能够很快的读取对应的项,在写入方面ArrayList直接写入线性表的下一项,操作很快,HashMap需要对存入的key进行hash计算,之后检测是否有碰撞发生,整体上比ArrayList差一点。在数据量比较大的时候,ArrayList的读取速度和HashMap差距很大。


能够实现Lru策略

实现Lru策略需要记录元素的添加与访问顺序,需要不断的调整结构,链表将是不二直选,java中提供了LinkedHashMap可以方便实现Lru策略。


能够适应多线程并发访问操作

能够适应并发操作,则需要保证一些数据的同步,需要对相应的数据加锁操作。


读写锁

Java1.5中提供了读写锁(ReadWriteLock),可能保证多个线程可以同时读取,但是写操作与读操作,写操作与写操作互斥。


实现

具体实现请点击查看
LruCache
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: