多執行緒學習06 執行緒安全

2021-07-11 07:24:07 字數 1173 閱讀 7875

執行緒安全-互斥鎖-執行緒同步

多執行緒的安全隱患

1,資源共享

1塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同乙個資源;

比如多個執行緒訪問同乙個物件、同乙個變數、同乙個檔案。

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

安全隱患解決-互斥鎖

互斥鎖使用格式

@synchronized

(鎖物件

) 注意:鎖定1份**只用1把鎖,用多把鎖是無效的。

互斥鎖的優缺點

優點:能有效的防止因多執行緒搶奪資源造成的資料安全問題。

缺點:需要消耗大量的cpu資源。

使用前提:多條執行緒搶奪同一塊資源。

相關專業術語:執行緒同步(同步不是同時,是同一條執行緒執行。預設是非同步執行)

執行緒同步的意思是:多條執行緒在同一條線上執行(按順序的執行任務)

問:如何使多條執行緒同步執行。加互斥鎖@synchronized(self)

事例:

#import "viewcontroller.h"

@inte***ce viewcontroller ()

/* 執行緒1 */

@property(nonatomic,strong)nsthread *thread1;

/* 執行緒2 */

@property(nonatomic,strong)nsthread *thread2;

/* 執行緒3 */

@property(nonatomic,strong)nsthread *thread3;

/* 票數 */

@property(nonatomic,assign)nsinteger ticketcount;

@end

@implementation viewcontroller

- (void)viewdidload

/** 售票 */

-(void)saleticket

else}}

}-(void)touchesbegan:(nsset*)touches withevent:(uievent *)event

學習筆記06 多執行緒

多執行緒 2 實現runnable介面。class myrunnable implements runnable 步驟 a 建立乙個類 myrunnable 實現runnable介面。b 重寫runnable介面中run 方法,把要執行的 寫在run 方法中 c 在main函式中建立myrunnab...

多執行緒 執行緒安全

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

多執行緒 執行緒安全

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