首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
神奇的齐刘海
掘友等级
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
19
文章 19
沸点 0
赞
19
返回
|
搜索文章
赞
文章( 19 )
沸点( 0 )
jdk源码有感-ArrayList和LinkedList
1. ArrayList 里面主要是linkBefore方法。node(int index)这个方法是遍历获取index位置的Node结点,分成两部分遍历减少遍历的元素,这代码挺精髓的,自己写代码的时候也可以借鉴这种写法 linkBefore方法无非就是把新元素的next指针指…
jdk源码有感-HashMap
大家都知道,Hashmap的插入原理:根据key获取对应的hashCode值,然后对hashCode对数组长度取模,这样就可以得到key对应在数组中的index位置。 从源码中可以看出,hashCode的值的获取并没有像想象的直接h=key.hashCode,而是通过低16位与…
jdk源码有感-LinkedHashMap
LinkedHashMapLinkedHashMap是HashMap的一个子类,HashMap是无序的,LinkedHashMap遍历是有序的,下面来看看LinkedHashMap做了什么操作让遍历有
synchronized有感
EntrySet:如果线程已经持有了对象锁,此时如果有其他线程也想获得该对象锁的话,它只能进入EntrySet,并且处于线程的BLOCKED状态。 线程来竞争synchronized锁的时候,会先进入EntryList,通过CAS尝试修改count,若果成功将count=0修改…
volatile有感
也可以从上面那图接着讲,若线程1和线程2都执行的是a++的操作,都是use a=0,线程1 a++后a=1了,然后assign,store,write,使线程2工作内存中的a变量缓存无效,线程2又会马上从主内存读到新a=1加载到工作内存中去。但是此时线程2中并不需要再去从工作内…
fail-fast机制
之前在看jdk集合包的源码的时候,经常会看到modCount这个变量。
ReentrantLock有感
模拟多线程加锁情景ReentrantLock默认是非公平锁
ReentrantReadWriteLock有感
看完ReentrantLock后再来看看ReentrantReadWriteLock读写锁:
ConcurrentHashMap有感
都说HashMap是线程不安全的,ConcurrentHashMap是线程安全的。这次来看看ConcurrentHashMap是如何保证线程安全的? tabAt(tab, i = (n - 1) & hash))是定位到数组的index位置,如果此时该index位置上是空的,就…
CopyOnWriteArrayList有感
可以看到这边对add操作加了锁,elements是原数组,newElements是新数组且数组长度比原数组多1,把新元素放到新数组最后一个位置,然后把新数组赋给Array。加锁可以保证,在多线程写的情况下,只有一个线程能获取锁来写,从而保证了写的线程安全 代码很简洁啊,也没看到…
下一页
关注了
7
关注者
0
收藏集
0
关注标签
6
加入于
2019-07-14