使用 synchronized指令

2021-06-25 09:38:33 字數 727 閱讀 9095

使用

@synchronized指令

@synchronized

指令是在

objective-c

**中建立乙個互斥鎖非常方便的方法。

@synchronized

指令做和其他互斥鎖一樣的工作(它防止不同的執行緒在同一時間獲取同乙個鎖)。然而在這種情況下,你不需要直接建立乙個互斥鎖或鎖物件。相反,你只需要簡單的使用

objective-c

物件作為鎖的令牌,如下面例子所示:

- (void)mymethod:(id)anobj

建立給@synchronized

指令的物件是乙個用來區別保護塊的唯一標示符。如果你在兩個不同的執行緒裡面執行上述方法,每次在乙個執行緒傳遞了乙個不同的物件給

anobj

引數,那麼每次都將會擁有它的鎖,並持續處理,中間不被其他執行緒阻塞。然而,如果你傳遞的是同乙個物件,那麼多個執行緒中的乙個執行緒會首先獲得該鎖,而其

他執行緒將會被阻塞直到第乙個執行緒完成它的臨界區。作為一種預防措施,

@synchronized

塊隱式的新增乙個異常處理例程來保護**。

該處理例程會在異常丟擲的時候自動的釋放互斥鎖。這意味著為了使用

@synchronized

指令,你必須在你的**中啟用異常處理。了如果你不想讓隱式的異常處理例程帶來額外的開銷,你應該考慮使用鎖的類。 

synchronized使用說明

在併發程式設計中,多執行緒同時併發訪問的資源叫做臨界資源,當多個執行緒同時訪問物件並要求操作相同資源時,分割了原子操作就有可能出現資料的不一致或資料不完整的情況,為避免這種情況的發生,我們會採取同步機制,以確保在某一時刻,方法內只允許有乙個執行緒。採用synchronized修飾符實現的同步機制叫做...

synchronized的使用總結

synchronized的基本使用規則可總結為以下3條。1.當乙個執行緒訪問 某物件 的 synchronized方法 或者 synchronized 塊 時,其他執行緒對 該物件 的該 synchronized方法 或者 synchronized 塊 的訪問將被阻塞。2.當乙個執行緒訪問 某物件 ...

執行緒 synchronized的使用

synchronized public class sync override public void run public void pf int i catch interruptedexception e system.err.println i new date gettime public...