多線程的初級(jí)使用崖面,新手福利
多線程的使用可以明顯的提高代碼的運(yùn)行效率,尤其在耗時(shí)操作時(shí)候梯影,比如獲取網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)巫员、視頻解碼,圖片加載等等方面甲棍,下面我就把多線程的常用方法給簡(jiǎn)單介紹一下
多線程分類(lèi):
同步(sy) | 異步(asy) | |
---|---|---|
串行 | 同一線程挨個(gè)執(zhí)行 | 其他線程挨個(gè)執(zhí)行 |
并行 | 同一線程挨個(gè)執(zhí)行 | 多個(gè)線程同時(shí)執(zhí)行 |
NSThread的使用方法:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//Nsthread 使用方法
//使用方法一
[NSThread detachNewThreadWithBlock:^{
[self test_01];
}];
//使用方法二
NSThread *thread =[[NSThread alloc]initWithTarget:self selector:@selector(test_02) object:nil];
[thread start];
}
-(void)test_01{
for (int i = 0; i<1000; i++) {
NSLog(@"**********");
}
}
-(void)test_02{
for (int i = 0; i<1000; i++) {
NSLog(@"##########");
}
}
下面是控制臺(tái)輸出:
2017-08-08 09:33:21.239 Thread_GCDDeom[2467:102054] **********
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102055] ##########
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102054] **********
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102055] ##########
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102054] **********
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102055] ##########
2017-08-08 09:33:21.241 Thread_GCDDeom[2467:102054] **********
2017-08-08 09:33:21.241 Thread_GCDDeom[2467:102055] ##########
NSThread的其他用法還有:(這里不做解釋)
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
+ (void)exit;
+ (double)threadPriority; //獲取線程的優(yōu)先級(jí)
+ (BOOL)setThreadPriority:(double)p; //這個(gè)是設(shè)置線程的優(yōu)先級(jí)
從上面的例子可以看得出简识,NSThread是蘋(píng)果封裝好的多線程,他是異步操作的
GCD的使用方法:
//測(cè)試一:創(chuàng)建一個(gè)同步線程---串行隊(duì)列(兩種方法創(chuàng)建串行隊(duì)列)
// dispatch_queue_t queue_01 =dispatch_queue_create("queue01", NULL);
dispatch_queue_t queue_01 =dispatch_queue_create("queue01", DISPATCH_QUEUE_SERIAL);
dispatch_sync(queue_01, ^{
[self test_01];
});
dispatch_sync(queue_01, ^{
[self test_02];
});
運(yùn)行結(jié)果:
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
// //測(cè)試二:創(chuàng)建一個(gè)同步線程----并行隊(duì)列
dispatch_queue_t queue_02 =dispatch_queue_create("queue02", DISPATCH_QUEUE_CONCURRENT);
dispatch_sync(queue_02, ^{
[self test_01];
});
dispatch_sync(queue_02, ^{
[self test_02];
});
運(yùn)行結(jié)果:
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
//測(cè)試三:創(chuàng)建一個(gè)異步線程---串行隊(duì)列
dispatch_queue_t queue_03 =dispatch_queue_create("queue03", NULL);
dispatch_async(queue_03, ^{
[self test_01];
});
dispatch_async(queue_03, ^{
[self test_02];
});
運(yùn)行結(jié)果:
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
dispatch_queue_t queue_04 =dispatch_queue_create("queue04", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue_04, ^{
[self test_01];
});
dispatch_async(queue_04, ^{
[self test_02];
});
運(yùn)行結(jié)果:
2017-08-08 10:23:18.687 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.687 Thread_GCDDeom[2911:154508] **********
2017-08-08 10:23:18.687 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.687 Thread_GCDDeom[2911:154508] **********
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154508] **********
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154508] **********
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154508] **********
教程到此結(jié)束感猛,如果您需要Demo請(qǐng)點(diǎn)擊此處
如有疑問(wèn)Email : grammermao@gmail.com
最后還是歡迎您的star(☆☆☆☆☆)七扰,您的支持是我繼續(xù)寫(xiě)demo的無(wú)線動(dòng)力