Java
忆昂
这个作者很懒,什么都没留下…
展开
-
Java线程本地存储ThreadLocal
1.ThreadLocal是Java中所提供的线程本地存储机制,可以将数据缓存在某个线程内部,该线程可以在任意时刻、任意方法中获取缓存的数据2.ThreadLocal底层是通过ThreadLocalMap来实现的,每个Thread对象中存在一个ThreadLocalMap,Map的key为ThreadLocal对象,Map的value为需要缓存的值3.如果在线程池中使用ThreadLocal可能会造成内存泄漏,因为ThreadLocal对象使用完之后,应该要吧设置的key、value,也就是Entry对原创 2022-02-21 15:17:12 · 1362 阅读 · 0 评论 -
HashMap的put方法
Java 1.7中,HashMap底层是由数组和链表实现的,而1.8中是由数组、链表和红黑树实现的。put方法的大体流程1.根据key通过哈希算法和与运算得出数组下标2.如果数组下标位置元素为空,则将key和value封装为Entry对象(JDK1.7中是Entry对象,1.8中是Node对象)并放入该位置3.如果数组下标位置元素不为空:a.如果是JDK1.7,则先判断是否需要扩容,(扩容),生成Entry对象,并使用头插法添加到当前位置的链表中b.如果是JDK1.8,则先判断当前位置上的Nod原创 2022-02-21 13:03:35 · 570 阅读 · 0 评论 -
ArrayList和LinkedList的区别
1.底层数据结构不同,ArrayList底层基于数组实现的,LinkedList底层基于链表实现的2.由于底层数据结构不同,他们的适用场景也不同,ArrayList更适合随机查找,LinkedList更适合删除和添加3.ArrayList和LinkedList都实现了List接口,但是LinkedList还额外实现了Deque接口,所以LinkedList还可以当双端队列来使用。ArrayList get(int index)方法比LinkedList对应的方法要快,后者需要遍历去查找。Linked原创 2022-02-21 10:30:26 · 495 阅读 · 0 评论