安全隱患:
多線程具有資源共享的特點(diǎn), 一塊資源有可能同時(shí)被多個(gè)線程共享, 也就是說在同一時(shí)刻有多個(gè)線程會(huì)去訪問同一塊資源. 例如: 多個(gè)線程訪問同一塊對象, 同一個(gè)變量, 同一個(gè)文件.
當(dāng)多個(gè)線程同時(shí)去訪問同一塊資源的時(shí)候, 這樣的行為很容易引發(fā)數(shù)據(jù)錯(cuò)亂和數(shù)據(jù)安全問題.
去消除多線程的安全隱患, 就要去給它加上一把鎖, 這把鎖叫做互斥鎖.
互斥鎖使用格式
@synchronized(鎖對象) {
// 需要鎖定的代碼
};"
注意:鎖定1份代碼只用1把鎖,用多把鎖是無效的
互斥鎖的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):能有效防止因多線程搶奪資源造成的數(shù)據(jù)安全問題
缺點(diǎn):需要消耗大量的CPU資源
互斥鎖的使用前提:多條線程搶奪同一塊資源
相關(guān)專業(yè)術(shù)語:線程同步
線程同步的意思是:多條線程在同一條線上執(zhí)行(按順序地執(zhí)行任務(wù))
互斥鎖,就是使用了線程同步技術(shù)