Java
文章平均质量分 77
soulh88
学生,别急,在学了在学了
展开
-
Synchronized底层以及锁升级机制
在对象头中的倒数第三bit 有个是否是偏向锁的标志位,如果是1,那么就去读Mark Word前23个bit,获取线程ID,通过线程ID来确认想要获得对象锁的线程是不是“偏向”的线程(有点像MVCC去获取up_limit_id 对比 transaction id的感觉了)然后线程就开始通过CAS去获取锁(自旋,默认10次吧好像是),一旦获得,将会复制这个对象的Mark Word到虚拟机栈的Lock Record中,并将之前的Owner指针指向该对象锁。如果这时候有其他线程来了,想获取这个对象的锁。原创 2023-03-08 20:20:59 · 123 阅读 · 0 评论 -
Java集合之Collection类之子类Set,List和Queue
5.内存空间占用:ArrayList 的空 间浪费主要体现在在 list 列表的结尾会预留一定的容量空间,而 LinkedList 的空间花费则体现在它的每一个元素都需要消耗比 ArrayList 更多的空间(因为要存放直接后继和直接前驱以及数据)。尾插法:对于尾插法而言,不是说ArrayList就一定比LinkedList效率高,经过大量的数据测试,发现10w以内LinkedList比ArrayList快,100w以上ArrayList明显比LinkedList快。HashSet:无序,唯一。原创 2023-03-05 21:17:22 · 241 阅读 · 0 评论