![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java多线程
文章平均质量分 92
啊哈哈哈哈小莫
这个作者很懒,什么都没留下…
展开
-
ReentrantLock 中 AbstractQueuedSynchronizer 的源码流程总结
ReentrantLock 是一个可重入锁,可重入的意思是当前线程已经获取到锁之后,在锁范围内在后续逻辑需要再次获取锁时,可以直接获取到锁,不需要等待解锁操作,线程获取到ReentrantLock时,AbstractQueuedSynchronizer的state会从0加1,在一次锁范围内有几次lock,state就会被加到几,然后在unlock时对state进行减1操作,知道state为0时,才...原创 2020-05-05 23:05:30 · 124 阅读 · 0 评论 -
volatile总结
volatile的两大特性 1. 保证可见性 因为在线程之间的交互可以有两种方式进行,一种是共享内存,还有一种是通信(例如线程中的wait,notify方法) 但是如果有多个线程进行竞争时共享内存的变量可能会得不到同步的更新,就是两个线程都在自己的工作内存中对这个成员变量a=0进行更新,假设线程1把成员变量a=1,然后线程1先刷新变量到共享内存中a=1,此时线程2是不知道a值得变化,线程2输出a...原创 2020-04-18 22:56:18 · 184 阅读 · 0 评论 -
java线程基础
1.进程与线程的区别 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位) 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位) 2.线程的五个状态 新建:就是创建一个线程对象。 就绪:就是调用strat()方法之后,线程变成可运行状态进入...原创 2019-03-06 16:49:27 · 96 阅读 · 0 评论