一,一些基本概念的理解
任務:就是系統要處理的事情,簡單的理解可以是程式要執行的函式或者方法體
佇列:任務的容器,多個任務按照排隊的方式放置在佇列中。佇列是任務的容器,執行緒是任務執行的資源。
併發:在乙個時間片內,多個任務是同時執行的。
序列:任務是挨個執行。
同步:針對佇列來說的,佇列內的任務是在主線程內執行的,沒有開闢新的執行緒。
非同步:針對佇列來說的,佇列內的任務是新開闢了執行緒,然後任務在新的執行緒執行。
注意點:
新手容易出現將執行緒和任務混淆,這個時候就要將上述概念深刻理解。首先,理解非同步和同步,同步和非同步的區別是否開闢新的執行緒,一般解決耗時操作(任務)。併發和序列,決定多個任務之間是否同時執行,解決的是任務間的邏輯關係。
二,nsthread
建立執行緒的方法:
方法一:使用alloc方法建立,建立完成後必須使用[thread
start
];啟動執行緒,不然執行緒不會執行。
nsthread
*thread = [[
nsthread
alloc
]initwithtarget
:self
selector
:@selector
(dowcing)
object
:nil];
//引數說明:object是要傳入的方法引數
方法二:類方法建立
[nsthread detachnewthreadselector:@selector(doworking) totarget:self withobject:nil];
缺點:1,nsthread
很難人為的去控制子執行緒的數量 2
,子執行緒如果建立過多,會嚴重的影響程式的效能,因為每乙個執行緒都會暫用一定的
cpu資源,會導致
cpu很忙碌, 特別是多人開發的時候
執行緒 三種方式 建立執行緒
第一種 1 模擬龜兔賽跑 繼承thread 重寫run 執行緒體 2 使用執行緒 建立子類物件 物件.strat 執行緒啟動 author administrator public class rabbits extends thread class tortoise extends thread ...
三種執行緒同步方式
三種執行緒同步方式,即互斥物件 事件物件和關鍵 段。1 屬於核心物件,它能夠確保執行緒擁有對單個資源的互斥訪問權。互斥物件包含乙個使用數量,乙個執行緒id和乙個計數器。id用於標識系統中的哪個執行緒當前擁有互斥物件,計數器用於指明該執行緒擁有互斥物件的次數。2 函式 createmutex 函式原型...
執行緒的三種建立方式
public class web12306 多執行緒的三種方式 class threadtest01 extends thread class threadtest02 implements runnable class threadtest03 implements callable return...