前言
- 最近在看黑马的并发编程笔记,讲得很好,对此进行一下总结
- 总结的目的不是抄一遍笔记,而是谈谈自己的理解加深记忆
- 涉及
- 线程互斥与同步
- synchronized使用细节及原理
- Reentrylock使用细节
- 三种模式思路
线程互斥与同步
互斥:指的是多个线程不能同时访问共享变量
同步:指的是多个线程按指定的顺序执行操作
在同时有多个线程运行过程中,如何达到互斥和同步呢?
- 加锁即可
在此使用黑马笔记中room例子来说明锁。(ps: 以前就了解锁,但总会记乱,发现使用形象化记忆后就很清楚)
解决互斥
- 锁就相当于上图的房子,里面放着会被并发访问的共享变量
- 此时绿色区域(owner)无线程,此时多个线程想并发访问房子里的共享变量,那么只允许其中一个线程进入房子访问,并把房门锁上。
- 剩下的没有拿到锁的线程只能在entrylist中排队
- owner中的线程访问结束后会离开房子,并告诉entrylist的线程可以进房子了
- entrylist的线