开发者社区> 问答> 正文

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

众所周知,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如何实现的

想听一听大家的建议?

展开
收起
蛮大人123 2016-02-28 18:37:59 4071 0
2 条回答
写回答
取消 提交回答
  • 开发
    可以用ConcurrentHashMap来实现线程安全的缓存
    2019-07-17 18:50:00
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

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

    2019-07-17 18:50:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载