鎖:方法鎖窘行、對(duì)象鎖溪王、類鎖
1.方法鎖(synchronized修飾方法時(shí)):synchronized放在方法和在方法內(nèi)synchronize(this)是等價(jià)的沉迹。都僅僅能鎖住當(dāng)前對(duì)象浪谴。
2.對(duì)象鎖(synchronized修飾方法或代碼塊)
調(diào)用此對(duì)象的同步方法或進(jìn)入同步代碼區(qū)域开睡,需要先獲得對(duì)象鎖;若對(duì)象鎖被占用需等待鎖釋放苟耻;java對(duì)象都有一個(gè)對(duì)象鎖篇恒,由jvm自動(dòng)獲取和釋放;synchronized方法正常返回或者拋異常而終止凶杖,jvm會(huì)自動(dòng)釋放對(duì)象鎖胁艰。
3.由于一個(gè)class不論被實(shí)例化多少次,其中的靜態(tài)方法和靜態(tài)變量在內(nèi)存中都只有一份智蝠。所以腾么,一旦一個(gè)靜態(tài)的方法被聲明為synchronized。此類所有的實(shí)例對(duì)象在調(diào)用此方法杈湾,共用同一把鎖解虱,我們稱之為類鎖。
***不是同一個(gè)對(duì)象漆撞,則不會(huì)產(chǎn)生相互排斥
對(duì)象鎖是用來(lái)控制實(shí)例方法之間的同步殴泰,而類鎖是用來(lái)控制靜態(tài)方法(或者靜態(tài)變量互斥體)之間的同步的。
同步和異步
同步:順序執(zhí)行浮驳,調(diào)用方法等待系統(tǒng)返回結(jié)果悍汛,出于阻塞狀態(tài);
異步:不用阻塞等待至会;委托異步任務(wù)單獨(dú)完成离咐。