多執行緒 04 執行緒狀態以及執行緒安全

2021-07-04 17:43:11 字數 638 閱讀 4982

控制線程的狀態

啟動執行緒

- (void)start;

// 進入就緒狀態 -> 執行狀態。當執行緒任務執行完畢,自動進入死亡狀態

阻塞(暫停)執行緒

+ (void)sleepuntildate:(nsdate *)date;

+ (void)sleepfortimeinterval:(nstimeinterval)ti;

// 進入阻塞狀態

強制停止執行緒

+ (void)exit;

// 進入死亡狀態

注意:一旦執行緒停止(死亡)了,就不能再次開啟任務

當多個執行緒訪問同一塊資源時,很容易引發資料錯亂和資料安全問題

安全隱患解決 – 互斥鎖

保證同一時間只能有乙個執行緒執行被鎖的**,保證資料的安全性

@synchronized(鎖物件) 

注意:鎖定1份**只用1把鎖(即所物件是同一物件),用多把鎖是無效的

互斥鎖的使用前提:多條執行緒搶奪同一塊資源

互斥鎖,就是使用了執行緒同步技術

nonatomic和atomic對比

ios開發的建議

互斥鎖和自旋鎖區別:

多執行緒 執行緒安全

原因 當多個執行緒同時共享,同乙個全域性變數或靜態變數。做寫的操作時,可能發生資料衝突問題,也就是執行緒安全問題。但是做讀操作是不會發生資料衝突問題。解決方案 方式一 內建鎖synchronized synchronized保證執行緒原子性,當執行緒進入方法的時候,自動獲取鎖,一旦鎖被其它執行緒獲取...

多執行緒 執行緒安全

public class unsafethread t.start while thread.activecount 1 system.out.println sum 1 從主記憶體中講sum變數複製到執行緒的工作記憶體 2 在工作記憶體中修改變數 1操作 3 將sum變數從執行緒的工作記憶體寫回到...

多執行緒 執行緒安全

執行緒安全 多個執行流對臨界資源的爭搶訪問,但是不會出現資料二義性 執行緒安全的實現 同步 通過條件判斷保證對臨界資源訪問的合理性 互斥 通過同一時間對臨界資源訪問的唯一性實現臨界資源訪問的安全性 互斥鎖實現的原理 互斥鎖本身是乙個只有0 1的計數器,描述了乙個臨界資源當前的訪問狀態,所有執行流在訪...