????????????????????????????????????????????????????????????線程的基本流程
?????????創(chuàng)建線程是處于新建狀態(tài)抡谐,start是就緒狀態(tài)株依,會放入到可調(diào)度線程池里面(cpu看線程是否可以調(diào) 用,是看線程是否在可調(diào)度線程池里面)码俩,cpu調(diào)度他的時候就會進(jìn)入運行狀態(tài),當(dāng)這個線程的時間片用完之后扬霜,進(jìn)入就緒狀態(tài)定鸟。所以調(diào)用了start方法之后,線程會在運行狀態(tài)和就緒狀態(tài)之間進(jìn)行來回的切換著瓶。當(dāng)線程調(diào)用sleep方法時候會進(jìn)入阻塞狀態(tài)联予,進(jìn)入阻塞狀態(tài)的線程是不可以工作的,進(jìn)入阻塞狀態(tài)時候線程會從可調(diào)度線程池里面移除出來到內(nèi)存里面蟹但。此時這個線程還存在只不過cpu不會調(diào)用他而已躯泰,當(dāng)sleep時間到了之后,會又移入可調(diào)度線程池中進(jìn)入就緒狀態(tài)华糖,當(dāng)cpu調(diào)用的時候又會進(jìn)入運行狀態(tài)麦向。// 當(dāng)線程里面的任務(wù)執(zhí)行完或者異常退出了之后進(jìn)入死亡狀態(tài),死亡會移除可調(diào)用線程池客叉,并且從內(nèi)存釋放诵竭,不會做任何事情不要想著重新啟動線程。
1.創(chuàng)建線程,新建狀態(tài)兼搏,NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(task)object:nil];
2.就是Start卵慰,到就緒
3.就是CPU的調(diào)度,在線程池里面的線程
4.中間可能有的線程的會加線程同步鎖或者調(diào)用Sleep方法佛呻,這樣這個線程就會從線程池里面出來裳朋,等待被喚醒后再進(jìn)入線程池,CUP進(jìn)行調(diào)用
5.調(diào)用結(jié)束就會殺死線程吓著,并釋放內(nèi)存