小记
文章平均质量分 88
小派师兄
这个作者很懒,什么都没留下…
展开
-
并发Lock聊聊AQS,AbstractQueuedSynchronize
简单聊聊AQS,AbstractQueuedSynchronize 你们知道并发的baba的谁吗? 生前不识Doug Lea,并发学了也枉然! Java并发编程核心在于java.concurrent.util这个包,围绕着许多并发处理工具,其中,绕不开AbstractQueuedSynchronize。 AQS特性 我们需要重点关注下面几个点 1.AQS内部维护state,表示资源的可用状态 private volatile int state; state三种访问方式 getState() set原创 2021-11-23 21:32:09 · 361 阅读 · 0 评论 -
一篇就够,synchronized原理详解
synchronized详解 在多线程同时访问一个共享变量时,volatile是一个轻量级的解决方案,但是volatile只能修饰一个变量并且不保证原子性。在Java中还提供了两种方式实现同步互斥访问:synchronized和Lock 其实这些本质上就是加锁, 加锁目的:序列化访问临界资源,即同一时刻只能有一个线程访问临界资源(同步互斥访问) 不过有一点需要区别的是:当多个线程执行一个方法时,该方法内部的局部变量并不是临界资源,因为这些局部变量是在每个线程的 私有栈中,因此不具有共享性,不会导致线程安全原创 2021-11-19 09:00:00 · 12579 阅读 · 0 评论 -
Foreach小坑,只遍历一半?Iterator
foreach原理和注意小坑,Iterator 1.foreach的原理 先看一段代码 public static void main(String[] args) { ArrayList<Object> list = new ArrayList<>(); list.add("1"); list.add("2"); for (Object o : list) { System.out.p原创 2021-11-18 13:41:28 · 458 阅读 · 0 评论 -
关于ArrayList和LinkedList区别,你可能忽略的RandomAccess接口
关于ArrayList和LinkedList RandomAccess接口 1.ArrayList和Linkedlist 面试常问ArrayList和LinkedList有什么区别, ArrayList底层是基于动态数组实现,LinkedList是基于双向链表实现 对于数组,我们知道随机访问速度快,因为可以通过索引也就是下标,或者说是指针。当然数组的缺点也很明显,在插入和删除时,数组的元素可能要移位。 链表插入和删除都很快,只是指针的指向改变,但是查找就要一个个遍历了,这也是它的缺点。 以上其实最原创 2021-11-16 21:34:23 · 281 阅读 · 0 评论