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:沒有銀彈)及原理
待我寫完,重新放鏈接