java 锁,入门新手
- 锁是什么?
游戏场景:
要想进高老庄高小姐的闺房,必须持有绣球一个,众武侠谁拿到绣球谁才进去,进去出来后,绣球可以重新被抢
闺房每个人都能进可以认为是 多线程的共享资源,众侠客就是 多线程,绣球 就是 锁 (ps:闭上眼想一下)
2.java里面的锁有哪些?
java 里面的场景和以上所说相似,所以设计了两套方案.(小声嘀咕:为啥两套)
(1)基于jvm 控制对象的synchronized 关键字
使用:1.同步代码块 2.同步方法
(2)基于AQS 的Lock
ReentrantLock重入锁(不公平锁),ReentrantLock(true)公平锁,ReentrantReadWriteLock读写锁,StampedLockt特殊调整版读写锁
2.怎么使用
(1)synchronized
使用最简单,最方便,加方法名,写成代码块
不动手!!! 老子教不会的哦! 自己敲一遍
(2)Lock
new 一个lock ,多线程控制该锁,标准写法:
lock.lock();
try{
}catch (Exception e){}finally {
lock.unlock();
}
3.使用心得
(1)注意锁保护的资源是不是被多线程访问的资源
很多新手瞎用,一会new一个对象出来,被访问,还说加锁不生效,亲,你家的锁只有一个线程访问啊
(2)建议多写几个test代码,跑一下,自己理解下,眼高手低,看是看不会的 亲
idea 建立项目,跑demo test,专用 链接地址:https://blog.csdn.net/m0_37849875/article/details/100878721
(3)具体每一个锁相关使用模板(ps:没有银弹)及原理
待我写完,重新放链接