多執行緒基礎:
先上個以下關於程序、執行緒和任務的基本的概念的概括圖:
程序:系統中正在執行的乙個應用程式(一種狀態)。
每個程序之間是相互獨立的,每個程序在其受保護專用的記憶體空間內。
執行緒:乙個程序要想執行任務,必須要有執行緒(每個程序至少有一條執行緒)
執行緒的序列
乙個執行緒中的任務的執行是序列的
如果在乙個執行緒中執行多個任務,那麼只能乙個乙個按順序執行這些任務
同乙個時間內,乙個執行緒只能執行乙個任務
程序和執行緒的比較:
執行緒是cpu呼叫(執行任務)的最小單位
程序是cpu分配資源和排程的單位
乙個程式可以對應多個程序,乙個程序中可以有多個執行緒,但至少要乙個執行緒
同乙個程序內的執行緒共享程序的資源
乙個程序中可以開啟多條執行緒,每條執行緒可以並行(同時)執行不同的任務
多執行緒可以提高執行效率
開發中一般開3~5條執行緒即可,不要太多
多執行緒的優缺點:
優點能適當提高程式執行效率
能適當提高資源利用率(cpu、記憶體利用率)
缺點:建立執行緒是有開銷的,ios下主要成本包括:核心資料結構
如果開啟大量的執行緒,會降低程式的效能
執行緒越多,cpu的排程執行緒上的開銷就越大
(重難點)程式設計更加複雜:比如執行緒之間的通訊,多執行緒的資料共享
主線程乙個ios程式執行後,缺省會開啟1條執行緒,成為"主線程」或"ui執行緒"
作用:顯示/重新整理ui介面
處理ui事件
使用注意:
別把耗時的操作放在主線程中
耗時操作會卡住主線程,嚴重影響ui的流暢度,給使用者一中「卡」的壞體驗
驗證按鈕的點選事件是在主線程中執行的
//模擬耗時操作
2for(nsinteger i = 0;i<100000;i++)
3不要將耗時操作放在主線程中,凡是跟ui相關的操作都是放在主線中處理
耗時操作應該放在子執行緒(後台執行緒,非主線程)
多執行緒基礎 一
多執行緒基礎篇 一 程序與執行緒的區別 程序 程序是作業系統結構的基礎,是系統進行資源分配和排程的基礎 執行緒 執行緒是作業系統排程的最小單元,乙個程序中可以建立多個執行緒。二 執行緒的狀態 new 新建狀態。runnable 可執行狀態。一旦呼叫start方法,執行緒就處於runnable狀態,乙...
多執行緒基礎(一)
多執行緒實現的第一種方式 自定義執行緒類 mythread類 第一步 書寫乙個類繼承thread public class mythread extends thread testmythread類 public class testmythread 多執行緒啟動的第二種方式 runnable實現類...
多執行緒基礎(一)
多執行緒基礎 一 程序是一塊包含了某些資源的記憶體區域,作業系統利用程序把它的工作劃分為 些功能單元。執行緒程序中包含的乙個或多個執行單元稱之為執行緒。乙個執行緒是程序的乙個順序執行流。同類的多個執行緒共享一塊記憶體空間和一組系統資源,執行緒本身有乙個工程式執行時的堆疊。程序和執行緒的區別 執行緒是...