資源訪問(wèn)沖突問(wèn)題
使用鎖,需要先聲明一個(gè)鎖。鎖可以是任意類型的對(duì)象。一般會(huì)聲明一個(gè)Object類型的對(duì)象。
private Object _lock = new object();//這個(gè)對(duì)象不能為空,必須new一個(gè)。
要解決資源沖突問(wèn)題,多個(gè)線程要使用同一把鎖。
lock (_lock)//大括號(hào)里面寫代碼,就是你要把它鎖上的代碼
{
}
有可能會(huì)有多個(gè)線程去拿鎖,但是鎖只會(huì)被一個(gè)線程拿到,不會(huì)被多個(gè)線程拿到
當(dāng)鎖被某個(gè)線程拿到了,其他線程拿不到,怎么辦?他就會(huì)在這等著
拿到鎖的線程,就會(huì)執(zhí)行大括號(hào)里的代碼,執(zhí)行完后,鎖自動(dòng)解開(kāi)
其他線程就可以開(kāi)始拿這個(gè)鎖了
哪個(gè)線程搶到了鎖,就可以執(zhí)行鎖里面的代碼。
鎖的優(yōu)點(diǎn):解決了資源沖突問(wèn)題;
缺點(diǎn):在同一個(gè)時(shí)間內(nèi),只能被一個(gè)線程執(zhí)行,會(huì)拖慢多線程執(zhí)行速度
示例:


標(biāo)簽: