iOS 建立多執行緒的幾種方法

2021-07-15 03:09:02 字數 1609 閱讀 3293

nsthread

多執行緒方式1  例項方法

nsthread *thread1 = [[nsthread

alloc]initwithtarget:self

selector:@selector(threadaction1) object:nil];

//啟動執行緒  需要啟動執行緒

[thread1 start];

多執行緒方式  2  類方法

不需要手動啟動執行緒 [

nsthread

detachnewthreadselector:

@selector

(threadaction1) totarget:

self

withobject:

nil];

多執行緒方式3 [

self

performselectorinbackground:

@selector

(threadaction1) withobject:

nil];

//回歸主線程。更新ui

1、dispatch_sync(dispatch_get_main_queue(),block)

2、  [

self

performselectoronmainthread:

@selector

(updateui) withobject:

self

waituntildone:

yes];

//多執行緒呼叫方法

-(void)threadaction1

[self

test1];這裡呼叫tes1執行緒位址和 該執行緒位址相同

}-(void)test1

//    多執行緒方式4

//建立乙個操作佇列

nsoperationqueue*opqueue=[[nsoperationqueue

alloc

]init];

操作佇列

一、新增新執行緒  nsinvocationoperation*op1=[[nsinvocationoperation

alloc

]initwithtarget

:self

selector

:@selector

(op1action) 

object

:nil];

新增到佇列裡面

[opqueue addoperation:op1];

二、    用**塊的形式開闢乙個新的執行緒

[opqueue addoperationwithblock:^];

-(void)op1action

當多個執行緒同時訪問同一資源的時候,注意執行緒同步問題

解決方案有三

一、設定執行緒同步鎖,只能有乙個執行緒來訪問

@synchronized(self)

二、建立乙個序列佇列

dispatch_queue_t queue=dispatch_queue_create("test",null);

三、設定最大併發數

//    設定最大併發數

opqueue.maxconcurrentoperationcount=1;

多執行緒 一 建立執行緒的幾種方法

一般有兩種建立runnable例項的方法 1 實現runnable介面,實現裡面的run方法,扔個thread類,然後start 2 也可以建立futuretask類的例項,因為futuretask實現了runnablefuture介面 繼承自runnable介面 futuretask建構函式中這裡...

實現多執行緒的幾種方法

一。通過繼承thread類實現多執行緒 繼承thread類,並覆蓋父類的run 方法。如下例子 public class mythread extends thread override public void run 二。通過實現runnable介面實現多執行緒 實現runnable介面,並實現父...

iOS 建立多執行緒的三種方法

1 通過nsobject的方法建立執行緒 這個方法會自動開闢乙個後台執行緒,引數1 在這個後台執行緒中執行的方法,引數2 用於傳遞引數 self performselectorinbackground selector banzhuanplus withobject nil 第一步 建立執行緒 ns...