摘要:CopyOnWriteArrayList,我对这样的第一印象就是在讲多线程的时候,例子中使用到过这个。 JavaDoc翻译 一种线程安全的变体,ArrayList其中的所有可变操作(add,set等)都通过对基础数组进行全新复制来实现。当遍历操作远远超过修改时,它可能比替代方法更有效,并且在您无法或 阅读全文
posted @ 2020-06-24 22:04 smartcat994 阅读(17) 评论(0) 推荐(0) 编辑
摘要:在面试题中在容器类中最常问到就是XXX是不是线程安全的,如果不是,那么可以使用什么来进行线程安全。 不过在使用中,我个人会选择加锁的方法来保证线程安全,但是现在回想起来好像有点问题。 ConCurrentHashMap的底层是:散列表+红黑树,与HashMap是一样的。 通过看它的源码中的JavaD 阅读全文
posted @ 2020-06-24 20:29 smartcat994 阅读(17) 评论(0) 推荐(0) 编辑
摘要:LinkedHashMap看名字其实就知道了是链表和Map的集合体。 这个东西在1.4的时候被提出,然后一直沿用至今,说实话在目前的开发中我还是没有遇到过这个的使用场景。 第一张图为LinkedHashMap整体结构图,第二张图专门把循环双向链表抽取出来,直观一点,注意该循环双向链表的头部存放的是最 阅读全文
posted @ 2020-06-24 19:58 smartcat994 阅读(28) 评论(0) 推荐(0) 编辑
摘要:文章开头,全家桶少不了。 作为HashMap的好兄弟,TreeMap存在肯定是有的他的理由的。 我看源码喜欢先看JavaDoc 翻译TreeMap的JavaDoc 基于红黑树的NavigableMap实现。 根据映射的键的Comparable或根据映射创建时提供的Comparator对映射进行排序, 阅读全文
posted @ 2020-06-24 16:05 smartcat994 阅读(24) 评论(0) 推荐(0) 编辑
摘要:首先内存模型是和内存结构是不一样的。内存模型是类似CPU内存结构的。 CPU的内存是有一级二级三级的,如果每一次都是要去内存中处理。实在是太慢了。 如果有一级二级三级这种层次那么就会有一个新的问题就是内存的一致性问题。 这个问题就像互联网技术一样。需要各种各样的协议。用协议来控制对应的 由于存在着缓 阅读全文
posted @ 2020-06-24 14:46 smartcat994 阅读(30) 评论(0) 推荐(0) 编辑