众所周知,java中实现缓存最简单的办法就是使用LinkedHashMap。然而这样的缓存,在多线程下就会出现问题,使得程序发生异常。那么问题来了,如何实现一个线程安全的缓存呢?
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如何实现的
想听一听大家的建议?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。