作業系統的設計,因此可以歸結為三點:
(1)以多程序形式,允許多個任務同時執行;
(2)以多執行緒形式,允許單個任務分成不同的部分執行;
(3)提供協調機制,一方面防止程序之間和執行緒之間產生衝突,另一方面允許程序之間和執行緒之間共享資源。
2. 執行緒與程序的區別?
程式: 完成某種功能的一段**。靜態概念。
任務: 程式完成的乙個活動。既可以是乙個程序,也可以是乙個執行緒。
程序: 程式的一次執行過程。乙個獨立的程序在記憶體中有自己的資料空間和**空間。它所擁有的資料變數屬於它自己。
執行緒: 執行緒是程序的乙個執行序列。同乙個程序建立的多個執行緒可以共享程序的一些資源,如全域性變數,同時,多個執行緒可以有自己的棧空間,執行緒的區域性變數只屬於這個執行緒。
執行緒可以有自己的堆疊和區域性變數,但執行緒沒有單獨的位址空間,因此乙個執行緒死掉就等於整個程序死掉,所以執行緒的健壯性不如程序。但程序切換時,系統開銷大,因此
資源利用率低。
對於一些要求同時執行且要共享資源的併發操作,只能用執行緒,而不能用程序。
總結:1. 乙個執行緒只能同時屬於乙個程序,乙個程序可以有多個執行緒,且至少有乙個執行緒。
2. 同一程序的所有執行緒共享程序的所有資源。有些資源的訪問需要執行緒之間互斥訪問。
3. 真正在處理機上執行的是執行緒,而不是程序。
4. 同步問題: 不同程序的執行緒之間利用訊息通訊的方式實現同步。
執行緒與程序的區別?
1、 執行緒是程序的一部分,所以執行緒有的時候被稱為是輕權程序或者輕量級程序。
2、 乙個沒有執行緒的程序是可以被看作單執行緒的,如果乙個程序內擁有多個程序,程序的執行過程不是一條線(執行緒)的,而是多條線(執行緒)共同完成的。
3、 系統在執行的時候會為每個程序分配不同的記憶體區域,但是不會為執行緒分配記憶體(執行緒所使用的資源是它所屬的程序的資源),執行緒組只能共享資源。那就是說,出了cpu之外(執行緒在執行的時候要占用cpu資源),計算機內部的軟硬體資源的分配與執行緒無關,執行緒只能共享它所屬程序的資源。
4、 與程序的控制表pcb相似,執行緒也有自己的控制表tcb,但是tcb中所儲存的執行緒狀態比pcb表中少多了。
5、 程序是系統所有資源分配時候的乙個基本單位,擁有乙個完整的虛擬空間位址,並不依賴執行緒而獨立存在。
多執行緒有幾種實現方法,都是什麼?
1. 繼承 thread 類
2. 實現 runnable 介面再 new thread(yourrunnableojbect)
4. 多執行緒同步和互斥有幾種實現方法,都是什麼?
執行緒間的同步方法大體可分為兩類:使用者模式和核心模式。顧名思義,核心模式就是指利用系統核心物件的單一性來進行同步,使用時需要切換核心態與使用者態,而使用者模式就是不需要切換到核心態,只在使用者態完成操作。
使用者模式下的方法有:原子操作(例如乙個單一的全域性變數),臨界區。核心模式下的方法有:事件,訊號量,互斥量。
5. 多執行緒同步和互斥有何異同,在什麼情況下分別使用他們?舉例說明。
執行緒同步是指執行緒之間所具有的一種制約關係,乙個執行緒的執行依賴另乙個執行緒的訊息,當它沒有得到另乙個執行緒的訊息時應等待,直到訊息到達時才被喚醒。
執行緒互斥是指對於共享的程序系統資源,在各單個執行緒訪問時的排它性。當有若干個執行緒都要使用某一共享資源時,任何時刻最多隻允許乙個執行緒去使用,其它要使用該資源的執行緒必須等待,直到占用資源者釋放該資源。執行緒互斥可以看成是一種特殊的執行緒同步(下文統稱為同步)。
來自<
>
面試 多執行緒
1.執行緒通常有五種狀態,建立,就緒,執行 阻塞和死亡狀態。2.阻塞的情況又分為三種 1 等待阻塞 執行的執行緒執行wait 方法,該執行緒會釋放占用的所有資源,jvm會把該執行緒放入 等待池 中。進入這個狀態後,是不能自動喚醒的,必須依靠其他執行緒呼叫notify 或notifyall 方法才能被...
多執行緒Java面試題總結
57 thread類的sleep 方法和物件的wait 方法都可以讓執行緒暫停執行,它們有什麼區別?答 sleep 方法 休眠 是執行緒類 thread 的靜態方法,呼叫此方法會讓當前執行緒暫停執行指定的時間,將執行機會 cpu 讓給其他執行緒,但是物件的鎖依然保持,因此休眠時 間結束後會自動恢復 ...
多執行緒總結
多執行緒的重要性和作用我就不做說明了。直接進入正題,整理下,整理了下網上的若干資源,寫得很好的 一 首先不用說是msdn 1.system.threading 命名空間 system.threading命名空間提供一些使得可以進行多執行緒程式設計的類和介面。除同步執行緒活動和訪問資料的類 mutex...