首页 > java如何实现线程安全的缓存

java如何实现线程安全的缓存

众所周知,java中实现缓存最简单的办法就是使用LinkedHashMap。参考: http://aliahhqcheng.iteye.com/admin/blogs/1665024

然而这样的缓存,在多线程下就会出现问题,使得程序发生异常。那么问题来了,如何实现一个线程安全的缓存呢?

  1. 有线程安全的HashMap-->ConcurrentHashMap,可是没有线程安全的LinkedHashMap。不过阿里的同学实现了一个对ConcurrentHashMap进行改装,实现了线程安全的缓存,参考:http://jm-blog.aliapp.com/?p=689
  2. 使用Collections.synchronizedMap()包装LinkedHashMap,这个也是一种实现方式。
  3. 使用读写锁ReentrantReadWriteLock+LinkedHashMap实现。
  4. 使用synchronized + memcached
  5. redis可以支持吗?
  6. guava cache如何实现的

想听一听大家的建议?


redis的一些原子操作可以支持多线程


读写锁ReentrantReadWriteLock+LinkedHashMap 会有线程安全问题,最好是用ConcurrentHashMap+RWLock

【热门文章】
【热门文章】