線程 NSThread 多線程
線程與進程
進程
是一個活動的程序,一個容器
是系統資源管理的最小單位
切換代價較高
線程
是在進程容器中運行,實際工作的代碼
是程序執行的最小單位
切換代價較低(由於線程是在同一塊內存中進行切換的)
一個NSThread對象在程序中控制一個線程,當你有很多任務需要執行,但又不想阻塞主線程時,
多線程將會很有用。運用多線程可以同時執行多個任務。
NSThread的方法
//初始化
1、- (id)init //這個是NSThread的指定初始化方法
2、- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument
初始化一個線程,應該注意的是這個SEL只能有一個參數,並且選擇的方法不能有返回值,
需要注意的是這個方法只是創建了一個線程,並沒有開始這個線程,要用stat方法去開始線程
3、+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument
創建並開始一個線程。
4、- (void)start //開始一個線程
5、+ (void)sleepUntilDate:(NSDate *)aDate
阻塞當前線程,直到指定時間
6、+ (void)sleepForTimeInterval:(NSTimeInterval)ti
使線程睡眠一段時間
//判斷線程狀態
7、- (BOOL)isExecuting //判斷線程是否正在執行
8、- (BOOL)isCancelled //判斷線程是否已經取消
9、- (BOOL)isFinished //判斷線程是否執行完
10、+ (BOOL)isMainThread //判斷當前線程是不是主線程
11、+ (BOOL)isMultiThreaded //判斷應用程序是否是多線程的
12、- (BOOL)isMainThread //判斷制定的對象是否是主線程
13、+ (NSThread *)mainThread //返回一個主線程對象
14、+ (NSThread *)currentThread //返回當前的線程
15、+ (NSArray *)callStackReturnAddresses
返回的是這個線程在棧中所占的地址所組成的數組
16、+ (NSArray *)callStackSymbols //返回棧空間的符號
//線程屬性
17、– threadDictionary //返回線程對象的字典
18、– name //返回線程名字
19、– setName: //設置線程名字
20、– stackSize //返回線程所占棧的空間大小
21、– setStackSize: //設置線程所占棧的空間大小
//線程優先權
22、+ threadPriority //返回當前線程的優先權,其實返回的是一個double型數字,
//從0.0 到1.0 其中1.0最高
23、– threadPriority //返回當前線程對象的優先權
24、+ setThreadPriority: //設置當前線程的有限權
25、– setThreadPriority: //同上