執行緒基本概念
題目轉自http://blog.csdn.net/morewindows/article/details/7392749
第一題:執行緒的基本概念、執行緒的基本狀態及狀態之間的關係?
執行緒,有時稱為輕量級程序,是CPU使用的基本單元;它由執行緒ID、程式計數器、暫存器集合和堆疊組成。它與屬於同一程序的其他執行緒共享其程式碼段、資料段和其他作業系統資源(如開啟檔案和訊號)。
執行緒有四種狀態:新生狀態、可執行狀態、被阻塞狀態、死亡狀態。狀態之間的轉換如下圖所示:
第二題:執行緒與程序的區別?
1、 執行緒是程序的一部分,所以執行緒有的時候被稱為是輕權程序或者輕量級程序。
2、 一個沒有執行緒的程序是可以被看作單執行緒的,如果一個程序內擁有多個程序,程序的執行過程不是一條線(執行緒)的,而是多條線(執行緒)共同完成的。
3、 系統在執行的時候會為每個程序分配不同的記憶體區域,但是不會為執行緒分配記憶體(執行緒所使用的資源是它所屬的程序的資源),執行緒組只能共享資源。那就是說,出了CPU之外(執行緒在執行的時候要佔用CPU資源),計算機內部的軟硬體資源的分配與執行緒無關,執行緒只能共享它所屬程序的資源。
4、 與程序的控制表PCB相似,執行緒也有自己的控制表TCB,但是TCB中所儲存的執行緒狀態比PCB表中少多了。
5、 程序是系統所有資源分配時候的一個基本單位,擁有一個完整的虛擬空間地址,並不依賴執行緒而獨立存在。
第三題:多執行緒有幾種實現方法,都是什麼?
1. 繼承 Thread 類
2. 實現 Runnable 介面再 new Thread(YourRunnableOjbect)
第四題:多執行緒同步和互斥有幾種實現方法,都是什麼?
執行緒間的同步方法大體可分為兩類:使用者模式和核心模式。顧名思義,核心模式就是指利用系統核心物件的單一性來進行同步,使用時需要切換核心態與使用者態,而使用者模式就是不需要切換到核心態,只在使用者態完成操作。
使用者模式下的方法有:原子操作(例如一個單一的全域性變數),臨界區。核心模式下的方法有:事件,訊號量,互斥量。
第五題:多執行緒同步和互斥有何異同,在什麼情況下分別使用他們?舉例說明。
執行緒互斥是指對於共享的程序系統資源,在各單個執行緒訪問時的排它性。當有若干個執行緒都要使用某一共享資源時,任何時刻最多隻允許一個執行緒去使用,其它要使用該資源的執行緒必須等待,直到佔用資源者釋放該資源。執行緒互斥可以看成是一種特殊的執行緒同步(下文統稱為同步)。