1. NSThread相關的主要方法:
創建、啟動線程
[objc] view plaincopy主線程相關方法 + (NSThread *)mainThread; // 獲得主線程 [objc] view plaincopy
得到當前線程、獲取線程名字
[objc] view plaincopy創建線程後自動啟動線程
[objc] view plaincopy隱式創建並啟動線程
[objc] view plaincopy2. 線程狀態示意圖
3. 互斥鎖
@synchronized(鎖對象) { // 需要鎖定的代碼 }
注意:鎖定1份代碼只用1把鎖,用多把鎖是無效的
互斥鎖的優缺點 優點:能有效防止因多線程搶奪資源造成的數據安全問題 缺點:需要消耗大量的CPU資源 互斥鎖的使用前提:多條線程搶奪同一塊資源 相關專業術語:線程同步 線程同步的意思是:多條線程按順序地執行任務 互斥鎖,就是使用了線程同步技術4. 原子性和非原子性
OC在定義屬性時有nonatomic和atomic兩種選擇 atomic:原子屬性,為setter方法加鎖(默認就是atomic) nonatomic:非原子屬性,不會為setter方法加鎖 atomic加鎖原理 [objc] view plaincopy5. 線程間通信
什麼叫做線程間通信
在1個進程中,線程往往不是孤立存在的,多個線程之間需要經常進行通信 線程間通信的體現 1個線程傳遞數據給另1個線程 在1個線程中執行完特定任務後,轉到另1個線程繼續執行任務 線程間通信常用方法 [objc] view plaincopy線程間通信示例 – 圖片下載
6. Demo 演示
業務描述(賣票): 模擬兩個線程搶奪一份資源
運行結果圖:
主要代碼說明:
1. 屬性及方法定義:
[objc] view plaincopy2. 點擊Start對應方法的代碼:
[objc] view plaincopy3. 子線程執行內容對應的方法
[objc] view plaincopy4. 更新主線程UI對應的方法
[objc] view plaincopy這一節,我詳細的介紹了線程的主要概念及NSThread的使用,下一節將為大家介紹GCD的概念及使用。