1. 程式人生 > >執行緒基本概念

執行緒基本概念

題目轉自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) 

第四題:多執行緒同步和互斥有幾種實現方法,都是什麼?



執行緒間的同步方法大體可分為兩類:使用者模式和核心模式。顧名思義,核心模式就是指利用系統核心物件的單一性來進行同步,使用時需要切換核心態與使用者態,而使用者模式就是不需要切換到核心態,只在使用者態完成操作。
使用者模式下的方法有:原子操作(例如一個單一的全域性變數),臨界區。核心模式下的方法有:事件,訊號量,互斥量。

第五題:多執行緒同步和互斥有何異同,在什麼情況下分別使用他們?舉例說明。

執行緒同步是指執行緒之間所具有的一種制約關係,一個執行緒的執行依賴另一個執行緒的訊息,當它沒有得到另一個執行緒的訊息時應等待,直到訊息到達時才被喚醒。

執行緒互斥是指對於共享的程序系統資源,在各單個執行緒訪問時的排它性。當有若干個執行緒都要使用某一共享資源時,任何時刻最多隻允許一個執行緒去使用,其它要使用該資源的執行緒必須等待,直到佔用資源者釋放該資源。執行緒互斥可以看成是一種特殊的執行緒同步(下文統稱為同步)。