更新時間:2021-06-16 來源:黑馬程序員 瀏覽量:
被多個線程同時訪問,使用線程同步技術(shù),可以確保數(shù)據(jù)在任何時刻最多只有一個線程訪問。
(1)同步代碼塊:使用 synchronized() 對需要完整執(zhí)行的語句進(jìn)行“包裹”,synchronized(Obj obj) 構(gòu)造方法里是可以傳入任何類的對象
同步方法:
在方法的申明里申明 synchronized
(2)死鎖
當(dāng)線程需要同時持有多個鎖時,有可能產(chǎn)生死鎖??紤]如下情形:
線程 A 當(dāng)前持有互斥所鎖 lock1,線程 B 當(dāng)前持有互斥鎖 lock2。
接下來,當(dāng)線程 A 仍然持有 lock1 時,它試圖獲取 lock2,因?yàn)榫€程 B 正持有 lock2,因此線程 A 會阻塞等待線程 B 對 lock2 的釋放。
如果此時線程 B 在持有 lock2 的時候,也在試圖獲取 lock1,因?yàn)榫€程 A 正持有 lock1,因此線程 B 會阻塞等待 A 對 lock1 的釋放。
二者都在等待對方所持有鎖的釋放,而二者卻又都沒釋放自己所持有的鎖,這時二者便會一直阻塞下去。這種情形稱為死鎖。
(3)應(yīng)用場景有哪些?
XX去銀行開個銀行賬戶,銀行給 me 一張銀行卡和一張存折,XX用銀行卡和存折來搞事情:銀行卡瘋狂存錢,存完一次就看一下余額;同時用存折子不停地取錢,取一次錢就看一下余額。
【AI設(shè)計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個工作日,就業(yè)率已達(dá)到94.55%,班均薪資20763元
2025-09-19【AI智能應(yīng)用開發(fā)-Java】畢業(yè)當(dāng)天offer率91%,薪資1W+占比54.2%,班級均薪12k+
2025-09-19