NSThread

  • 一個NSThread對象就代表一條線程
  • 創(chuàng)建、啟動線程
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object: nil];
    [thread start];

線程一啟動,就會在線程 thread 中執(zhí)行 self 的 run 方法

  • 主線程相關(guān)方法
+ (NSThread *)mainThread; // 獲取主線程
- (BOOL)isMainThread;     // 是否為主線程
  • 獲取當(dāng)前線程

NSThread *thread = [NSThread currentThread];

  • 線程的名字
- (void)setName:(NSString *)name;
- (NSString *)name;
  • 創(chuàng)建線程后自動啟動線程
+ (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(nullable id)argument;

*隱式創(chuàng)建并啟動線程

- (void)performSelectorInBackground:(SEL)aSelector withObject:(nullable id)arg;

*上述2中創(chuàng)建線程方式的優(yōu)缺點(diǎn):

1)優(yōu)點(diǎn):簡單快捷
2)缺點(diǎn):無法對線程進(jìn)行更詳細(xì)的設(shè)置

  • 線程的狀態(tài)
  • 啟動線程
- (void)start; //進(jìn)入就緒狀態(tài) -> 運(yùn)行狀態(tài)。 當(dāng)線程任務(wù)執(zhí)行完畢,自動進(jìn)入死亡狀態(tài)。
  • 阻塞(暫停)線程
// 進(jìn)入阻塞狀態(tài)
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti; 
  • 強(qiáng)制停止線程
+ (void)exit;  // 進(jìn)入死亡狀態(tài)

注意:一旦線程停止(死亡)了,就不能再次開啟任務(wù)

多線程的安全隱患

  • 資源共享

1塊資源可能被多個線程共享,也就是** 多個線程可能會訪問同一塊兒資源 ,比如多個線程訪問同一對象、同一變量、同一文件。
當(dāng)多個線程訪問同一塊資源時,很容易引發(fā)
數(shù)據(jù)錯亂和數(shù)據(jù)安全問題**

安全隱患解決 - 互斥鎖

  • 互斥鎖格式

@synchronized(鎖對象) { // 需要鎖定的的代碼}
注意:鎖定1一份代碼只用1把鎖,用多把鎖是無效的

  • 互斥鎖的優(yōu)缺點(diǎn)

1) 優(yōu)點(diǎn):能有效的防止因多線程搶奪資源造成的數(shù)據(jù)安全問題
2) 缺點(diǎn):需要消耗大量的CPU資源

  • 互斥鎖的使用前提: 多條線程搶奪同一塊資源

  • 相關(guān)專業(yè)術(shù)語: 線程同步

線程同步的意思是:多條線程在同一條線上執(zhí)行 (按順序地執(zhí)行任務(wù)),互斥鎖,就是使用了線程同步技術(shù)

  • OC在定義屬性時有nonatomicatomic兩種選擇
  1. atomic: 原子屬性,為 setter 方法加鎖 (默認(rèn)是atomic),線程安全,需要消耗大量的資源
  2. nonatomic: 非原子屬性,不會為 setter 方法加鎖,非線程安全,適合內(nèi)存小的移動設(shè)備
  • iOS 開發(fā)建議

所有的屬性都聲明為 nonatomic ,盡量避免多線程搶奪同一塊資源,盡量將加鎖、資源搶奪的業(yè)務(wù)邏輯交給服務(wù)器端處理,減小移動客戶端的壓力

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容