- 博客(4)
- 收藏
- 关注
原创 对AQS的个人理解和解析
(如果前面的节点ws是1就再找前面的,因为如果前面节点ws是1说明其放弃抢锁了,马上要离开队列,自然不会唤醒后面线程)AQS是JUC包下的一个抽象类,本身并没有什么具体的业务实现但是其为为Java的并发工具提供了可实现的方法,ReentrantLock,ThreadPoolExecutor等工具类都是基于AQS去实现的;:当某个线程获取到锁资源了,其他的线程再想获取锁资源时会发现无法获取,这时候,线程会包装成为一个node,将其放在同步队列中。值得注意的是:同步队列使用的是双向链表的形式存储线程。
2024-07-24 19:51:35
342
原创 Java内存模型(JMM)的一些个人理解
加了volatile关键字之后,线程对相应的变量的值进行修改时会立即将修改后的数据刷新到内存中去。由于数据刷新必须经过总线,当对相应的线程做了标注的时候,其他线程能通过总线嗅探机制感知到相应的变量的变化,并将变量标记为无效,后续使用变量时就会去找最新的变量。因为每个线程无法直接对主内存的内容进行修改,线程内部内存会将需要的主内存的数据拷贝一份作为副本。JMM(Java 内存模型)主要定义了对于一个共享变量,当另一个线程对这个共享变量执行写操作后,这个线程对这个共享变量的可见性。
2024-07-21 22:09:17
232
原创 KMP算法的原理与实例
KMP算法是一种能够大大降低字符串查找的时间复杂度的算法,正常来说,设被查找字符串(以下简称主串)的长度为n,需要匹配的字符串(以下简称)副串的长度为m,在最差情况下,对于0<=i<=n-m的主串里的每一个元素都需要查找m的长度,故时间复杂度为O(NM)。校赛考了个这种算法,当时不懂KMP算法于是就光荣的TLE了,赛后看题解发现是没见过的算法,写篇题解纪念一下。递推构造next数组的方法如下:其中ss为。
2023-05-18 23:48:25
67
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人