@synchronized(鎖對象){//需要鎖定的代碼}
線程間的通訊
[selfperformSelectorOnMainThread:@selector(<#selector#>) withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>];
??? [selfperformSelector:<#(nonnull SEL)#> onThread:<#(nonnull NSThread *)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>]
串行隊列
? ? ? ? ? ? ?dispatch_queue_tqueue =dispatch_queue_create("wangjianye",NULL)
dispatch_queue_tqueue =dispatch_get_main_queue() ? ? 主隊列
并發(fā)隊列
dispatch_queue_tqueue =dispatch_get_global_queue(DISPATCH_TARGET_QUEUE_DEFAULT,0 )
同步函數(shù)
?? ??? ?? ??? ??dispatch_sync(queue, ^{
?? ??? ???? ??? ??? })
異步函數(shù)
?? ??? ??? ?? ??dispatch_async(queue, ^{
???? ??? ??? ???? ? })
隊列組
?dispatch_group_tgroup =dispatch_group_create();
???dispatch_group_async(group,queue, ^{
??? })
???dispatch_group_async(group,queue, ^{
??? })
???dispatch_group_notify(group, main_queue, ^{
??? })
NSOperation和NSOperationQueue實現(xiàn)多線程的具體步驟
(1)先將執(zhí)行的操作封裝到NSOperation對象中
(2)然后將NSOperation對象添加到NSOperationQueue中
(3)系統(tǒng)會自動將NSOperation封裝的操作放到一個新的線程中執(zhí)行
NSOperation是個抽象類,并不具備封裝操作的能力,必須使?它的子類
使用NSOperation?類的方式有3種:
(1)NSInvocationOperation
(2)NSBlockOperation
(3)自定義子類繼承NSOperation,實現(xiàn)內(nèi)部相應(yīng)的?法
NSInvocationOperation的用法:
NSInvocationOperation*operation = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(run)object:nil];
??? [operationstart];
NSBlockOperation的用法:
?NSBlockOperation*operation = [NSBlockOperationblockOperationWithBlock:^{
??? }];
添加執(zhí)行泡仗, 加不加都可以:
[operationaddExecutionBlock:^{
??? }];
[operationaddExecutionBlock:^{
??? }];
??? [operationstart];
NSOperationQueue的用法:
NSOperationQueue*queue = [[NSOperationQueuealloc]init];
??? [queue addOperation:operation0];
??? [queue addOperation:operation1];
??? [queue addOperation:operation2];
??? [queueaddOperationWithBlock:^{
??? }];
隊列的取消操作:
[queuecancelAllOperations]
暫停與恢復隊列:
?[queuesetSuspended:YES]
設(shè)置NSOperation 在queue的優(yōu)先級
[operationsetQueuePriority:NSOperationQueuePriorityNormal]
設(shè)置 NSOperation 的依賴
[operationaddDependency:operation1]
設(shè)置NSOperation 的完成
[operationsetCompletionBlock:^{
??? }];
自定義NSOperation的子類