執行緒安全-互斥鎖-執行緒同步
多執行緒的安全隱患
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變數從執行緒的工作記憶體寫回到...