由NSLock實現的鎖。
NSLock是Cocoa提供的最基本的鎖對象,我們經常使用。除了lock和unlock方法之外,NSLock還提供了tryLock和lockBeforeDate:前壹種方法會嘗試鎖定,如果鎖不可用(已經鎖定),則不會阻塞線程並返回No. LockBeforeDate:該方法會嘗試在指定日期之前鎖定,如果在指定時間之前無法鎖定,則返回No..
用synchronized關鍵字構建的鎖
@synchronized指令使用的obj是鎖的唯壹標識符。只有標識符相同,才能滿足互斥。如果線程2中的@synchronized(obj)更改為@synchronized(other),線程2將不會被阻塞。@synchronized指令實現鎖的優點是,我們不需要在代碼中顯式創建鎖對象。您可以實現鎖機制,但是作為壹種預防措施,@synchronized塊將隱式添加壹個異常處理程序來保護代碼,它將在異常拋出時自動釋放互斥鎖。所以如果不希望隱式異常處理例程帶來額外的開銷,可以考慮使用鎖對象。