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...